当前位置:  操作系统/服务器>linux

linux vps服务器进程kswapd0与events/0消耗大量CPU的问题

    来源: 互联网  发布时间:2014-08-25

    本文导语:  今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的CPU 100%了。 重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用。盯了有好十几分钟,主要消耗 CPU 的进程有两个,一个是 mysql,另一个是 apache。...

今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的CPU 100%了。

重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用。盯了有好十几分钟,主要消耗 CPU 的进程有两个,一个是 mysql,另一个是 apache。下面的图可以看到,mysql 占用了很大部分的 CPU 使用。apache 单个进程虽然占得不多,但有不少个 apache 进程同时存在,也消耗了不少 CPU 的使用。

当然,这些不足以让服务器的 CPU 直接跑满挂掉,后来发现了两个大家伙:

当 mysql 的 CPU 消耗降下来之后,出现了两个奇怪的进程:kswapd0 和 events/0。

1. kswapd0

Linux uses kswapd for virtual memory management such that pages that have been recently accessed are kept in memory and less active pages are paged out to disk.

(what is a page?)…Linux uses manages memory in units called pages.

So,the kswapd process regularly decreases the ages of unreferenced pages…and at the end they are paged out(moved out) to disk

kswapd0进程的作用:它是虚拟内存管理中,负责换页的,操作系统每过一定时间就会唤醒kswapd ,看看内存是否紧张,如果不紧张,则睡眠,在 kswapd 中,有2 个阀值,pages_hige 和 pages_low,当空闲内存页的数量低于 pages_low 的时候,kswapd进程就会扫描内存并且每次释放出32 个free pages,直到 free page 的数量到达pages_high。

查看内存使用率,发现内存确实不够用,有时候已经使用到了swap。

2. events/0

另一个进程 events/0 是工作者线程,主要是用来执行delay work的。先简单介绍一下。

我们都知道中断的底半部机制有三种:软中断、tasklet和工作队列。其中软中断很少使用,内核中只有网络在使用,它的延时是最小的。

tasklet是软中断的一个应用,所有线程注册的tasklet都会顺序被执行。因此tasklet的执行环境是软中断上下文,所以不能阻塞或者睡眠。一般情况下,tasklet的延迟也很小,可以满足大部分需求。

要是底半部中可能睡眠,那么只好使用工作队列了。工作队列其实是把要做的底半部的函数交给内核的专门线程去调用。这样工作队列就运行于线程环境了,不怕睡眠。当然,睡眠会影响注册到同一线程的其它底半部的执行,但不会引起大的问题。每个CPU都有一个线程(events/n,n是编号)负责执行工作队列,第一个CPU的线程是events/0,如果是双核的,还会有一个events/1线程。程序使用了工作队列,所以每次执行都会多出一个events/0(第一个CPU上工作线程)。

内核的软中断辅助处理线程ksoftirqd/n(n是CPU编号),它们负责出发软中断中触发的软中断。它们将重新触发软中断放在系统空闲时调用,而不是马上。这样用户空间不至于饥饿,重新触发的软中断也得以尽快执行。(《Linux内核设计与实现》85页)

宕机原因显而易见了,physical mem 不足,引起 swap 频繁。其实这也是 VPS 使用上的一个常见的问题了,通常是由 Apache 占用内存过多引起的。kswapd0 是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒 kswapd0 进程,由 kswapd0 分配磁盘交换空间作缓存,因而占用大量的 CPU 资源。重启Apache,释放内存,问题就会消失。但这不是长久之计,最好的方法还是花点钱升级下内存。我也知道随着访问量的不断上涨,肯定要升级下内存,但是没想到这个问题这么快就来了……


    
 
 

您可能感兴趣的文章:

  • linux下怎么看磁盘io消耗
  • 我的linux9.0内存消耗很大,怎么解决
  • 请教关于red hat linux系统内存消耗接近100%的原因?
  • 为什么我的Linux内存在不停的消耗中啊
  • linux 写文件会不断消耗内存 删除时又恢复
  • python实现监控linux性能及进程消耗性能的方法
  • linux僵尸(zombie)进程介绍及清除
  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • linux下进程占用内存空间详解
  • linux命令如何实现重启父进程而不会使其子进程退出
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • Linux中最多同时可以开多少个进程,一个进程可以开多少个线程?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • Linux守护进程 的子进程 终端处理
  • Linux内核进程与应用进程的通信方式有哪些?
  • 在linux,如何用共享内存来实现进程间的通讯?(这些进程没有父子关系)
  • linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行(在线)?
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何linux下监控进程及其子进程占用资源?
  • linux下的进程如何访问另外一个进程建立的mutex?
  • linux中用killall命令杀死进程的时候会释放掉该进程所占有的内存吗?
  • linux内核高手进!关于调用__fork()时0号进程的子进程才能与父进程共享PID的困惑
  • 请教:在Linux下怎么样检测一个进程是否是僵尸进程??
  • 请问linux进程的哪些信息保存在内核里?哪些信息又保存在进程空间里?谢谢
  • Linux下请教一个父进程杀死子进程的问题.
  • 怎么查看Linux中所运行的进程,并且知道哪些是停止响应的,用什么命令可以杀掉停止响应的进程?
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3