中午在一台kvm上配置监控,但是明显感觉机器卡的受不了,就简单的排查了下

1、查看服务器网卡流量

sar -n DEV 2 10

解决:php进程过多,耗用系统大量内存_第1张图片

可以看出网卡的流量并不是很大,排除网卡方面的问题。

2、查看CPU

top

解决:php进程过多,耗用系统大量内存_第2张图片

上图可以看出CPU占用也不是很多,但是发现了很多php-cgi的进程

3、查看系统内存

free -m

解决:php进程过多,耗用系统大量内存_第3张图片

不看不知道,一看吓一跳,系统内存已经使用完了,并且也使用了swap剩余内存,但是究竟是什么程序占用了内存呢。

ps -ef | grep php

查看当前系统中的所有进程,过滤出来php相关的进程

解决:php进程过多,耗用系统大量内存_第4张图片

大概统计了下,将近有200多个php相关进程,有什么方法能减少这些进程呢?

答案肯定是有的,在php-cgi的配置文件中是可以自定义php的进程数的。

vim /usr/local/php/etc/php-fpm.conf

搜索  max_children 字段,将后面的数字改成自己要定义的进程数

默认有256个,怪不了那么卡,我改成了100 个。

如果安装的是更高版本的PHP,则需要根据你的硬件配置设置合理的参数就可以了。

 pm.max_children = 200

 pm.start_servers = 100

 pm.min_spare_servers = 50

 pm.max_spare_servers = 150

 pm.max_requests = 5000

 

pkill php  结束所有的php进程

/usr/local/php-5.2.17/sbin/php-fpm start  启动php

在查看进程

解决:php进程过多,耗用系统大量内存_第5张图片

发现明显减少了。

最后在查看下系统的内存

解决:php进程过多,耗用系统大量内存_第6张图片

问题解决,系统也明显感觉不到卡了。