前一段时间,突然其他部门的同事反馈公司的管理后台很卡,收到消息,我第一时间就打开了后台查看,确实是很卡,而且是每个页面都卡,我赶紧登录了一下服务器,查看了一下当前的负载:
[xxx@izuf6citbq8nvyzwdsic73z ~]$ uptime
up 974 days, 23:40, 1 user, load average: 0.05, 0.07, 0.13
服务器是4核8G的,因此CPU这边是没有问题的,接着我就赶紧登录了mysql,查看是否有sql堵住了,使用show full processlist命令,返回的结果也是正常的,通过netstat -i命令,得知网络也是正常的,再接着看内存,磁盘,这些指标也是正常的。
服务器各项指标都没有问题,那出问题的地方大概率就是PHP-FPM配置出了问题,接下来我就使用了ps -ef|grep php命令:
就看到了一个很奇怪的结果,就只有一个master进程跟worker进程。因为项目运行很长时间了,PHP-FPM配置我们是很少去修改,下图就是PHP配置
我们可以看到start_servers,以及min_spare_servers 都是10,也就是说正常情况下,至少有10个worker进程在工作的,那为什么目前只有1个worker进程在工作呢?其实到了这一步,卡的原因我们已经找到了,那么多同事在用后台管理系统,只有一个worker进程,那自然就会很卡的。
既然排查到了是PHP-FPM配置的问题,我们第一时间重启了PHP-FPM服务,但是还是没有用,服务器上面还是只有一个worker进程跟master进程,接着就重启了一次,还是没有效果。紧接着我们就去查看了PHP-FPM的错误日志,看到了下面的信息
报错信息提示有另外一个FPM实例已经在监听/tmp/php-cgi-71.sock,因此就导致我们重启PHP-FPM失败。
最后的解决方法就是把目前启动的php-fpm对应的master以及worker进程全都kill掉,然后再重启PHP-FPM服务,最后的效果如下
然后再问了一下同事,同事都反馈目前后台不卡了,问题已经得到了解决。