打印

lnmp1.4 php进程过多导致内存溢出mysql进程被杀死

lnmp1.4 php进程过多导致内存溢出mysql进程被杀死

配置:阿里云ECS   2核4G  centos7.4  64位问题如题:服务器的php进程过多导致内存溢出mysql进程被杀死

安装的lnmp1.4正式版,在使用过程中总是出现php进程过多导致内存溢出把mysql进程杀掉,原来服务器是2G内存,基本每天晚上mysql进程都要挂掉一次,重启数据库后网站就能访问,
后面把服务器内存升级到4G了,中间20天都没有再出现php进程过多导致内存溢出到最后mysql进程被杀掉的情况,从上周六开始又出现这种情况了,昨天晚上也出现了一次这种情况了,服务器日志如下图





pm.max_children 的值我已经调到80了,但php进程数量达到了84,麻烦军哥指导一下看这种情况要怎么处理,是继续把pm.max_children再调高一点吗?但服务器内存只有4G,希望军哥给点建议,谢谢!

TOP

没改过配置文件的话php-fpm都是dynamic模式,需要调整pm.start_servers、pm.min_spare_servers、pm.max_spare_servers 这3个参数

TOP

lnmp1.4 php进程过多导致内存溢出mysql进程被杀死

按我那个配置调整到多少合适呢?能给个指导建议吗?

TOP

回复 3# 的帖子

4G内存的话max设置80就还行,可以适当调小一点

TOP

奇怪了,我设置的是pm.max_children = 70,pm.start_servers = 25,pm.max_spare_servers = 60 ,重启了php,后面把服务器也重启了,但还是出现数据库进程被杀掉的情况,我查看了日志,发现php进程有71个,max设置成60不是php进程达到60就会自动清理空闲的php进程吗?这是什么原因呢?对了我上面也安装了一个php5.5,但没有网站使用php5.5,就还用的是默认配置,会和这个有关系吗?
附件: 您所在的用户组无法下载或查看附件

TOP

你如果还有其他版本的php,其他php-fpm的进程可能也统计进去了,不要的版本就停掉或者按论坛里的教程直接卸载掉

长期监控一下是哪个程序占用过多,哪个程序多再去排查

TOP

谢谢军哥,问题似乎解决了,服务器上原来装了两个php版本,昨天按你说的把5.5版本的php卸载了,今天看服务器日志,发现还是有内存溢出的情况,不过这次内存溢出不杀mysql进程了,把一个php进程杀掉了,我现在想不明白的是每次都是达到我设置的pm.max_children = 70 最大值超出70个php进程才杀掉一个,总是保持在70个php进程,而我的pm.max_spare_servers = 60 设置的是60,按说达到60个进程就会自动清理空闲的php进程,为什么我的这个要达到70个内存溢出了才杀掉多余的进程呢?这样是不是还存在问题?

TOP