進程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.pswp.cn/news/397221.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397221.shtml
英文地址,請注明出處:http://en.pswp.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…