新聞中心
隨著計算機系統(tǒng)的不斷發(fā)展和應用,我們日益發(fā)現強大的操作系統(tǒng)的不可或缺性。在這其中,Linux作為一個十分穩(wěn)定和開源的操作系統(tǒng)應用越來越廣泛,但由于其特有的進程管理模式,會出現進程CPU過載或內存泄露的問題,造成系統(tǒng)的崩潰。為了解決這些問題,Linux提供了”O(jiān)OM Killer”功能,本文將向大家介紹如何通過閱讀Linux OOM Killer日志進行問題排查。

網站建設哪家好,找成都創(chuàng)新互聯公司!專注于網頁設計、網站建設、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯還提供了依蘭免費建站歡迎大家使用!
一、什么是Linux OOM Killer
OOM Killer的全稱為Out of Memory Killer,翻譯過來即“內存不足殺手” 。它的作用是在內存消耗過多時,強制殺掉一些進程,以釋放部分內存。當系統(tǒng)出現內存泄漏等問題時,OOM Killer將根據一個提交內存的信息鏈表來管理進程的使用內存,如果內存超過了軟限制(Soft Limit),系統(tǒng)會采取二次的縮減資源措施,如果再繼續(xù)耗費,則會觸發(fā)硬限制(Hard Limit),此時就會出現OOM Killer的行為。
二、為什么需要Linux OOM Killer
在理想狀態(tài)下,一個進程在使用內存時,可能存在溢出的狀態(tài),這時內核會將進程殺死,讓進程的內存資源被釋放,以便讓其它進程占用。需要OOM Killer的主要原因是,在內存消耗控制不當的情況下,系統(tǒng)會在占用內存的程序被送往硬盤交換區(qū)之前,耗盡所有其它支配權的內存。隨后, 內核中的out_of_memory_killer進程將被調用來監(jiān)控內存的使用情況。當內存用盡時,系統(tǒng)會出現“內存不足”的提示,此時系統(tǒng)會被迫通過強制關閉進程,以釋放一些內存資源。由于這種情況下操作文件系統(tǒng)的效率上限將被降低, 因此可快速宣告系統(tǒng)無法繼續(xù)工作。
三、如何閱讀Linux OOM Killer日志
在Linux系統(tǒng)下,進程資源管理的問題是一個長期的演化過程。對于管理員而言,了解被殺掉的進程以及出現問題的根源至關重要。因此,我們需要查看是哪個進程的內存使用量超了限制并觸發(fā)的OOM Killer。操作系統(tǒng)會將OOM Killer的日志記錄在/var/log/messages中,我們可以通過以下幾個步驟來查看具體日志信息。
之一步:打開/var/log/message文件,查找關鍵字‘oom-killer’。
打開終端,輸入命令:sudo vi /var/log/messages
輸入/oom-killer,查找這個字符串出現的地方。
第二步:查找OOM killer進程正在殺掉的進程號
在/var/log/message文件里搜索關鍵字’pid’,找到進程號,就可以知道是哪個進程被OOM killer所殺掉。
第三步:進一步了解哪個進程出現了OOM killer問題
首先查看進程號對應的用戶名,輸入命令:ps -ef | grep 被殺掉的進程號
接著再次查看進程的詳細信息,例如,CPU使用率,內存使用率,輸入命令:top -p 被殺掉的進程號
當我們查看這些信息時,可能會出現一些看不懂或者不知道具體含義的變量。例如,內存使用情況、虛擬內存使用情況、RSS、Swap、VIRT等。如果想要更加深入了解這些變量的含義,可以查找Linux的相關教程或手冊資源來進一步釋疑,從而更好理解內存資源的使用狀況。
結語:
通過上述方法,我們可以判斷出系統(tǒng)資源的使用情況,查看哪些進程常常會出錯以及哪些進程一直保持性能,從而更好的了解Linux OOM Killer的日志。如果日志中包含的關鍵信息還無法解決你遇到的問題,那么我們可以通過更多的調試、提示或升級的方式解決問題。沒有哪種方法是完美的,能夠適用于所有情況。但是,學會如何查看Linux OOM Killer的日志將會有助于我們更好的管理Linux系統(tǒng)。
相關問題拓展閱讀:
- linux出現out of memory是什么問題
linux出現out of memory是什么問題
就是物理內存的陪租伍剩余大蘆或小不足,Linux的一個自我保護措施就是當物理內存不足時,把接下來將要啟動的程序kill掉,然后提示out of memory,從而防止物理內存耗盡而系統(tǒng)崩潰。所以當物理內存不足時,一些程序就啟動不了(直接被kill掉了),解決辦法是設置合適的swap內存交換空間(Linux的swap內存交換空間就相當于Windows系統(tǒng)的“虛擬內存”的設置),或者型碼將不需要運行的進程用kill命令殺死從而釋放內存空間,推薦還是設置swap吧。
有兩種方法可以解決這個問題
1、如果可能,請升級到64位系統(tǒng)。
這是更好的解決辦法,因為所有的內存都將成為low memory。如果你在這種情租旦況下耗盡了low memory,那就真的是out of memory了。
2、如果受限于必須使用32位系統(tǒng),更好的解決辦法是使用hugemem內核。
這種內核以不同的方式分割low/high memory,而且在大多數情況下會提供足夠多的low memory到high memory的映射。在大多數案例中,這是一個很簡單的修復方法:安裝hugemem kernel RPM包,然后重啟即可。
如果運行hugemem內核也不可能,你可以嘗試將/proc/sys/vm/lower_zone_protection 的值設置為250甚至更多。這將讓內核愿意保護low memory,從而在分配內存時多考慮從high memory分配。據我所知,此選項從2.6.x內核才開始可用。必要的是,您可能需要通過一些實驗來找到您系統(tǒng)環(huán)境中最適合的值??梢允褂孟旅娣椒焖俚脑O置和檢查改值:
# cat /proc/sys/vm/lower_zone_protection
# echo “250” > /proc/sys/vm/lower_zone_protection
在 /etc/sysctl.conf 中加入設置,以便啟動就生效:
vm.lower_zone_protection = 250
作為最后的努力,你可以關閉oom-killer。這個選州型侍項可以導致系統(tǒng)掛起,所以請小心使用(風險自冊吵負)!
查看當前oom-killer的狀態(tài):
# cat /proc/sys/vm/oom-kill
關閉/打開oom-killer:
# echo “0” > /proc/sys/vm/oom-kill
# echo “1” > /proc/sys/vm/oom-kill
當進程該被oom-killer殺死卻沒有被殺死時,相關信息會記錄到 /var/log/messages:
“Would have oom-killed but /proc/sys/vm/oom-kill is disabled”
簡單的就是說內存不足,看一下有哪個程序占用更大,kill掉
關于linux oom killer 日志的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
成都創(chuàng)新互聯科技有限公司,是一家專注于互聯網、IDC服務、應用軟件開發(fā)、網站建設推廣的公司,為客戶提供互聯網基礎服務!
創(chuàng)新互聯(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務器和獨立服務器。創(chuàng)新互聯成都老牌IDC服務商,專注四川成都IDC機房服務器托管/機柜租用。為您精選優(yōu)質idc數據中心機房租用、服務器托管、機柜租賃、大帶寬租用,可選線路電信、移動、聯通等。
分享題目:如何閱讀LinuxOOMKiller日志?(linuxoomkiller日志)
鏈接URL:http://fisionsoft.com.cn/article/djsspgc.html


咨詢
建站咨詢
