进程kswapd0与events/0消耗大量CPU的问题

http://www.nowamagic.net/librarys/veda/detail/2539

今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的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,释放内存,问题就会消失。但这不是长久之计,最好的方法还是花点钱升级下内存。我也知道随着访问量的不断上涨,肯定要升级下内存,但是没想到这个问题这么快就来了……

吐槽一下,虽然网站现在的规模也不算很大,但是慢慢也开始吃服务器的硬件了。CPU和内存接下来也需要升级,一个人维护这么一个站点还真的各种操心。

转载于:https://www.cnblogs.com/anruy/p/4978434.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

索引器

namespace _03{ class Program { //请编写一个类:ItcastClass,该类中有一个私有字段_names,数据类型为:字符串数组,长度为5,并且有5个默认的姓名。 //要求:为ItcastClass类编写一个索引器,要求该索引器能够…

跑三小时的monkey测试该怎么算_浅谈App测试(下)~带音频

文 | Vicky采编|Emily浅谈App测试(上)~带音频一、功能测试​二、性能测试(1)耗电量影响因素:定位、传感器、蓝牙,其中CPU、持续定位是两个平台造成耗电的主要因素。(2)流量也就是常说的耗流量,影响因素有重复请求&…

Flask基础(03)--创建第一个Flask程序

# 导入Flask from flask import Flask# 创建Flask的应用程序 # 参数__name__指的是Flask所对应的模块,其决定静态文件从哪个地方开始寻找 app Flask(__name__,static_url_path/static, # 静态文件的访问路径,默认为/staticstatic_folderstatic, # 静态…

2016-2017-2 《Java程序设计》课程学生博客和代码托管链接

2016-2017-2 《Java程序设计》课程学生博客和代码托管链接 博客 1552 20155201 李卓雯20155202 张 旭20155203 杜可欣20155204 王 昊20155205 郝博雅20155206 赵 飞20155207 王雪纯20155208 徐子涵20155209 林虹宇20155210 潘滢昊20155211 解雪莹20155212 江振思20155213 陆忠民…

C++快速排序

快速排序作为排序家族里面最为快捷的方式,值得思考。我们将一个数组中的某一个数定为基点,然后通过快速排序按照需求(假设升序),将比基点小的数丢在基点左边,把比基点大的数丢在基点右边这样来将基点数的正…

回顾一年的工作历程_【设备管理公司】召开20202021年度总结计划表彰暨工作述职会议...

点击上方蓝字关注我们2020年即将过去,为了总结2020年各项工作开展情况,同时做好2021年工作计划与部署,2020年12月30日-31日,设备管理公司组织召开了2020-2021年度总结计划表彰暨工作述职会议。公司领导、各部门经理、部门主管、车…

注册验证的时候一直出现的报错问题,终于解决了

今天再注册验证表单的时候一直报错,但是什么都没有改,就报错了,后面才知道原来是和我上次上传图片的时候,导入的2个js的顺序有关系的, 45行和41行互相换一下位置就好了 转载于:https://www.cnblogs.com/likeji/p/61433…

重排序

一、重排序。 1、为什么需要重排序? 现在的CPU一般采用流水线来执行指令。一个指令的执行被分成:取指、译码、访存、执行、写回、等若干个阶段。然后,多条指令可以同时存在于流水线中,同时被执行。 指令流水线并不是串行的&#x…

tableau三轴该怎么做_如何用tableau绘制城市地铁线路图?

在用tableau绘制地铁线路图之前,当然是要获取相关的数据啦我们以郑州目前已开通的地铁为例,分别是1、2、5号线经度、维度可在 网页上自行搜索哦(以谷歌地图为准)有了这些下面我们就要开始啦将Excel中你所需要的数据直接导入到tabl…

JS七种加密解密方法

HTML或JS加密解密 本文一共介绍了七种方法:   一:最简单的加密解密   二:转义字符"\"的妙用   三:使用Microsoft出品的脚本编码器Script Encoder来进行编码 (自创简单解码)  …

提高solr的搜索速度

之前是使用12台机分布式搜索,1台为主机做索引并分发给子机,8台做大索引搜索服务,3 台做小索引搜索服务,配置基本是内存在4-8G,cpu:2-8core的服务器,索引的大小为8G。搜索的响应时间 是150ms左右。&#xff…

哲学到编程:思想的实例化

万古长江水,千年儒释道。历史的长流中,芸芸众生,参差不齐,但总是能够总结出一个“生旦净末丑”来。儒、释、道,五千年的中华文化,却总是围绕着这三种主流思想交相演绎。千年间,豪士俊杰&#xf…

python 字符串交集_Python序列--集合(set)

集合集合用于保存不重复元素。- 集合和列表非常相似- 不同点:1.集合中只能存储不可变对象2.集合中存储的对象是无序(不是按照元素的插入顺序保存)3.集合中不能出现重复的元素集合的所有元素都放在一对”{ }” 中,两个相邻的元素之间用”,”分隔。集合最好…

mysql binlog日志查看及解码

mysql bin log日志导出 mysqlbinlog mysql-bin.000005 > /home/17bin.log 需要添加参数(--base64-outputdecode-rows -v)对输出结果解码 mysqlbinlog --base64-outputdecode-rows -v mysql-bin.000005 > /home/17bin.log转载于:https://www.cnbl…

【Python开发】Python的GUI用法总结

引用模块(tkinter): 1 from tkinter import * 主窗口设置: 1 # 主窗口 2 tk Tk() # 主窗口实例化 3 tk.title("文本处理工具") # 主窗口标题 4 tk.geometry("700x4001001…

JAVA 环境变量配置

JAVA 环境变量配置 1. 安装JDK 2.配置系统变量 新建          JAVA_HOME:D:\Program Files\Java\jdk1.8.0_65 Path添加       %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 新建CLASSPATH  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 3.完成…

8修改host_正点原子【STM32-F407探索者】第五十九章 USB 鼠标键盘(Host)实验

1)资料下载:点击资料即可下载2)对正点原子Linux感兴趣的同学可以加群讨论:9354467413)关注正点原子公众号,获取最新资料更新上一章我们向大家介绍了如何利用 STM32F4 的 USB HOST 接口来驱动 U 盘,本章,我们 将利用 ST…

CF815C Karen and Supermarket [树形DP]

题目传送门 Karen and Supermarket On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a lot of goods, but since she is a student her budget is still quite limited. In fact, she can only spend up to b dollars. Th…

linux命令积累之egrep命令

学搭建Nginx环境,必须要配置的Nginx.conf文件中,如下:#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worke…

Sublime Text 3 安装及插件推荐

本篇介绍跨平台编辑器Sublime Text 3的安装和其插件推荐。 目录: 1.介绍 2.下载安装 3.插件 4.参考资料 1.介绍 Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定&#xff0c…