CentOS7 php-fpm內存占用問題排查


1.問題排查

前些日子阿里雲服務器一直報內存占用過高的問題,后來就沒了聲息。我近期工作也比較忙,隨便看了看業務還在正常運行,就沒深入了解。后來服務器也不報警,就沒管了。

后來續費上去看了看了,好家伙怪不得沒報警了。原來雲監控插件都掛掉了。估計是因為內存占用過高,系統自動kill掉了雲監控。在主機里面重新啟動了雲監控,內存直接就100%。

開始排除問題。

SSH登陸服務器,用free -m 再確認一下主機內存。

1核2G內存的機子,內存直接就滿了。這台機器上面部署着Nginx+PHP+Mysql服務,外加一個Dokcer,但是Docker並沒有運行。正常來說內存是綽綽有余的。只能使用top而后Shift+M按內存使用進行排序,再進一步排查。

發現是php-fpm開了太多線程了,直接擠爆了內存所致。

2.着手解決

找到 /etc/php-fpm.d/www.confpm.max_children默認是50,每一個進程占用1%-2.5%的內存,加起來就耗費大半內存了。所以我們根據需要修改為30。

pm.max_spare_servers : 該值表示保證空閑進程數最大值,如果空閑進程大於此值,此進行清理 pm.min_spare_servers : 保證空閑進程數最小值,如果空閑進程小於此值,則創建新的子進程;

這兩個值均不能不能大於 pm.max_children 值,通常設置 pm.max_spare_servers 值為 pm.max_children 值的60%-80%。

最后,重啟php-fpm

systemctl restart php-fpm

問題解決。


免責聲明!

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



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