背景:
每次搭建完网站之后,都感觉网站越来越卡,访问越来越慢,查看之后发现mem内存占用竟然达到了800多M,而原本机器的内存也就1G,当然导致访问速度变慢了。于是百度了一下,根据教材查看了占用靠前的进程,发现有20多个php进程,每个占用内存大概3%,这样下来,整个内存基本都是被PHP占用了,就进行了PHP的进程限制配置,在此将教材再整理,给以后建站备用。
方法:
1.查看内存使用量:top命令后,看到1G内存只剩了71M可用。
2.查看内存占用量:以下命令二选一
ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n | less
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
下图可以看出,PHP进程占用了大量内存(第二列为内存使用百分比)
3.配置PHP,控制进程数及内存使用
通过配置以四个php设置参数:pm.max_children,pm.max_spare_servers,pm.min_spare_servers, php_admin_value[memory_limit],以控制php的子进程和内存占用:
pm.max_children:控制php-fpm子进程数量;pm.max_spare_servers:该值表示保证空闲进程数最大值,如果空闲进程大于此值,此进行清理,通常设置为pm.max_children的60%~80%;pm.min_spare_servers:保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程。 下面两个参数的值,均不能大于第一个参数的值,否则重启php时会报错。php_admin_value[memory_limit]:每个php-fpm进程的内存限制
vi/etc/php-fpm.d/www.conf
通用以上配置,1G内存,pm.max_children控制在15,php_admin_value[memory_limit]控制在64,基本php进程的最大占用量为75%。经测试发现,每访问一次PV,使用内存3.5%,最大并发基本可以控制在20左右,再往上会降低访问速度,当然只是从内存角度分析,不算带宽和代码质量。
对www.conf进行编辑,调整以上四个值,使php内存使用率降低。
完