近期帮朋友配置了一台LNMP服务器,几天后发现服务宕机了,排查发现Mysql服务停掉了。最后在尝试启动Mysql时发现内存不够导致Mysql服务无法启动,但当时比较忙就把Mysql的内存配置参数(innodb_buffer_pool_size=64MB)调低了一些,启动继续使用。想等空了再解决此问题。结果好景不长,一周左右,同样的问题又发生了,这次就只好想办法查找根源了。查到最后发现是内存过低时Mysql服务被系统强制Kill了。接下来就要查找内存消耗大户并想办法解决它。

top—>M

php-fpm.png

通过查看内存占用情况,发现内存消耗的黑手是php-fpm进程。随后查资料建议调整一些php-fpm配置参数可以解决此问题。

vi /usr/local/php5.6/etc/php-fpm.conf(此路径为我所配置服务器的php-fpm配置文件路径,大家根据自己环境实际情况修改。)


pm.max_children:该值表示最大进程数。每个进程大概需要1%~2..5%的内存,请根据机器实际配置情况调整。

pm.max_spare_servers:该值表示保证空闲进程数最大值,如果空闲进程大于此值,则进行清理 。

pm.min_spare_servers : 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程。

上面两个值均不能大于 pm.max_children 值,通常设置 pm.max_spare_servers 值为 pm.max_children 值的60%-80%。

php_admin_value[memory_limit]:该值用来限定php-fpm可以使用的内存量,可根据你的服务器内存大小和你的需求来修改。


修改后要重启php-fpm服务使配置生效。

service restart php-fpm