进程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,一经查实,立即删除!

相关文章

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

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

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

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

回顾一年的工作历程_【设备管理公司】召开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…

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

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

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

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

【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…

6工程文件夹作用_data_dragon数据工程小工具收集

最近在GitHub上创建了一个新工程,收集个人在数据工程工作的小工具集合,命名为data_dragon (数据一条龙)。取这个名字的是希望这些脚本或代码能够复用,端到端地减少临时数据处理的时间。最近因为工作上的一些变化,写作节奏有点被打…

暑假第十七测

题解&#xff1a; 第一题 #include<bits/stdc.h> using namespace std; #define ll long long const int M 1e5 10; ll a[M], b[M], ans; priority_queue <ll, vector<ll> , greater<ll> > Q; int main(){freopen("buy.in","r",…

Nginx搭建flv视频点播服务器

Nginx搭建flv视频点播服务器前一段时间使用Nginx搭建的多媒体服务器只能在缓冲过的时间区域内拖放, 而不能拖放到未缓冲的地方. 这就带来了一个问题: 如果视频限速的速率很小, 那么客户端观看视频时肯定不流畅, 而且用户不能向前拖放, 用户体验很不好. 如果视频限速的速率很大或…

编码拾遗

1 #!/usr/bin/env python32 #-*- coding:utf-8 -*-3 4 Administrator 5 2018/8/16 6 7 8 # fopen("demo","r",encoding"utf8")9 # dataf.read() 10 # print(data) 11 # f.close() 12 13 14 # print("沈哲子") 15 16 s"中国&qu…

mybatis 不生效 参数_Mybatis-日志配置

日志Mybatis 的内置日志工厂提供日志功能&#xff0c;内置日志工厂将日志交给以下其中一种工具作代理&#xff1a;SLF4JApache Commons LoggingLog4j 2Log4jJDK loggingMyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具。它会使用第一个查找得到的工具(按上文列举的顺…

PS通过滤色实现简单的图片拼合

素材如下&#xff1a; 素材一&#xff1a; 雪山 素材二&#xff1a; 月亮 效果&#xff1a; 实现步骤 1、在PS中打开雪山素材一 2、将月亮素材直接拖入雪山所在的图层中 3、锁定置入素材的高宽比&#xff08;点击一下链状按钮&#xff09; 4、调整月亮到合适大小合适位置 5、…

预处理:主成分分析与白化

主成分分析 引言 主成分分析&#xff08;PCA&#xff09;是一种能够极大提升无监督特征学习速度的数据降维算法。更重要的是&#xff0c;理解PCA算法&#xff0c;对实现白化算法有很大的帮助&#xff0c;很多算法都先用白化算法作预处理步骤。 假设你使用图像来训练算法&#x…

swagger 修改dto注解_Web服务开发:Spring集成Swagger,3步自动生成API文档

目录&#xff1a;1&#xff0c;Spring Boot集成Swagger2&#xff0c;Swagger接口文档页面3&#xff0c;常见问题和解决方法在Sping开发REST接口服务时&#xff0c;API文档是不可缺少的一个重要部分。Swagger框架定义了完整的REST接口文档规范&#xff0c;提供了强大的页面测试功…