服務器內存爆滿最佳處置方案


內存爆滿截圖:

分析:內存持續飆升,應該是有大量內存一直沒有釋放,考慮僵屍對象,僵屍進程,最簡單的就是重啟服務器,但是就無法找到罪魁禍首了。

驗證:top命令查看活躍進程的資源使用情況。(top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。

顯然活躍進程占用的內存並不多,造成內存爆滿的另有它因。

ps -aux 查看當前系統的進程狀態。看到有大量的postdrop和sendmail

順藤摸瓜,就找到了sendmail和postdrop上,通過重啟postfix,內存使用立馬斷崖式下跌。問題暫時得到解決。如下圖所示

終極解決方案:

postdrop是由sendmail啟動的,而sendmail又是由crond啟動的。所以根在crond服務上。

問題成因:crond在執行腳本時會將腳本輸出信息以郵件的形式發送給系統用戶,所以必然要調用sendmail,而sendmail又會調用postdrop發送郵件,但是如果系統的postfix服務沒有正常運行,那么郵件就會發送不成功,造成sendmail、postdrop、crond進程就無法正常退出,形成大量的僵屍進程

 

解決辦法:先把僵屍進程都干掉ps -ef | egrep "sendmail|postdrop" | grep -v grep |xargs kill,讓內存降下來,其實我一開始就是將postfix服務重啟了一下,問題就解決了,觀察了一段時間,僵屍進程並沒有再次出現。

為防以后postfix掛了再出現類似問題,可以進行如下配置,將crond的郵件通知關閉:

將/etc/crontab和/etc/cron.d/0hourly里的MAILTO=root修改為MAILTO=""

crontab -e第一行增加一段MAILTO=""

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM