zoukankan      html  css  js  c++  java
  • 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

    问题解决。

  • 相关阅读:
    使用beanUtils操纵javabean
    反射
    JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)
    Junit测试框架
    Eclipse常用快捷键
    Linux最全基础指令
    log file sync等待事件
    数据库要不要部署在docker容器内?
    MySQL启动报错-The server quit without updating PID file[FAILED]mysql/mysql.pid).
    MySQL数据库启动异常-[ERROR] [MY-011971]
  • 原文地址:https://www.cnblogs.com/byuc/p/11149701.html
Copyright © 2011-2022 走看看