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,解决方法非专业的,都是从网搜的,可能不是最佳方案。


posted @   lclc  阅读(1304)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示