Linux內存占用過高排查過程




    一朋友找我說,他們一個項目的服務器內存占用率太高了,讓我幫忙看下怎么回事。我正好不是太忙就幫他看了下,並記錄如下。

1 查看服務器狀態

    他的服務器是阿里雲的ECS,系統是 CentOS Linux release 7.5.1804 (Core)
    使用top命令看了下系統的狀態
    在這里插入圖片描述

    系統的整體負載和cpu並不高,但是內存使用比較高(總8G使用了7.2G)。
    使用M按內存占用率排序
    在這里插入圖片描述

2 查看消耗內存最多的前40個進程

    ps auxw|head -1;ps auxw|sort -rn -k4|head -40
    在這里插入圖片描述
    通過上圖可以發現有很多php-fpm的進程,使用命令ps -ef |grep php-fpm:\ pool\ www|wc -l 查看這中進程的個數有159個
    在這里插入圖片描述
    每個進程大概占用了50M,看來內存高的問題應該在於php-fpm池的子進程數過多的問題了。

3 解決辦法

    通過各種搜索,發現可以通過配置 pm.max_children 屬性,控制php-fpm子進程數量,首先,打開php-fpm配置文件,執行指令:
    vi /opt/php/php7.2/etc/php-fpm.d/www.conf
    找到 pm.max_children字段將其修改為100(原來是300),同事將pm.start_servers 修改為30 (原來是100)。
    然后重啟php-fpm systemctl restart php-fpm

    再次查看內存使用情況,發現內存使用降低了很多
    在這里插入圖片描述

    同時使用命令查看php的進程數降低了很多
    在這里插入圖片描述
    由於不是太了解php,解決方法非專業的,都是從網搜的,可能不是最佳方案。



免責聲明!

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



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