php-fpm子进程数控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php-fpm子进程数控制相关的知识,希望对你有一定的参考价值。
相关的参数:
pm = xxx: 如何控制子进程,选项有static和dynamic、ondemand(ondemand :启动时不会创建子进程,当有新请求时会创建)。
pm.max_children = xxx:
当pm = static时,创建的php-fpm子进程数量;
当pm = dynamic或ondemand时,创建的php-fpm子进程的最大数量。
pm.start_servers = xxx: dynamic模式下,系统会在php-fpm开始运行的时候启动“pm.start_servers”个php-fpm子进程。
pm.min_spare_servers = xxx: dynamic模式下,最小空闲进程的数量。如果空闲进程小于这个值,就会创建对应的进程。
pm.max_spare_servers = xxx: dynamic模式下,最大空闲进程的数量。如果空闲进程大于这个值,多余的空闲进程会被kill掉。
系统会根据需求动态的在“pm.min_spare_servers”和“pm.max_spare_servers”之间调整php-fpm进程数。
相关参数的取值:
通过ps命令查看每个php-fpm进程占用内存大小:运行一段时间后,每个进程占用的内存在20M-30M左右。
# ps -ylC php-fpm --sort:rss S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD S 0 29355 1 0 80 0 4352 51301 ep_pol ? 00:15:03 php-fpm S 2002 12865 29355 0 80 0 19296 54206 skb_re ? 00:58:51 php-fpm S 2002 29365 29355 0 80 0 19780 54335 skb_re ? 05:44:56 php-fpm S 2002 29359 29355 0 80 0 21280 54650 skb_re ? 05:44:51 php-fpm S 2002 29357 29355 0 80 0 21676 55289 skb_re ? 05:44:18 php-fpm S 2002 29358 29355 0 80 0 22716 55033 skb_re ? 05:43:25 php-fpm S 2002 29362 29355 0 80 0 26576 56073 skb_re ? 05:43:56 php-fpm S 2002 29360 29355 0 80 0 26864 56144 skb_re ? 05:44:18 php-fpm S 2002 29361 29355 0 80 0 26888 56165 skb_re ? 05:43:32 php-fpm S 2002 29356 29355 0 80 0 26896 56109 skb_re ? 05:44:23 php-fpm S 2002 29370 29355 0 80 0 27196 56146 skb_re ? 05:43:10 php-fpm S 2002 29371 29355 0 80 0 27240 56160 skb_re ? 05:44:10 php-fpm S 2002 29363 29355 0 80 0 27460 56227 skb_re ? 05:44:30 php-fpm S 2002 29373 29355 0 80 0 27636 56742 skb_re ? 05:43:27 php-fpm S 2002 29366 29355 0 80 0 28436 56427 skb_re ? 05:42:49 php-fpm S 2002 29374 29355 0 80 0 28636 56494 skb_re ? 05:44:40 php-fpm S 2002 29368 29355 0 80 0 28844 56999 skb_re ? 05:44:05 php-fpm S 2002 29375 29355 0 80 0 29972 56842 skb_re ? 05:43:18 php-fpm S 2002 29367 29355 0 80 0 30048 56800 skb_re ? 05:43:31 php-fpm S 2002 29364 29355 0 80 0 35872 58251 skb_re ? 05:44:25 php-fpm S 2002 29372 29355 0 80 0 42840 60428 skb_re ? 05:44:19 php-fpm
pm该用哪个,根据服务器硬件配置来决定吧。进程的产生和销毁都会带来一定的资源开销,所以考虑到稳定,选择static比较合适。而选用dynamic则可以结束多余的进程,释放内存。
pm.max_children值的设定,一般取"内存/20M"。这里的内存是不包括其他进程占用的内存的。
pm.start_servers的值=min_spare_servers + (max_spare_servers - min_spare_servers) / 2
比如说512M的VPS,假如分配给php-fpm最大250M,建议pm.max_spare_servers设置为250/30 ,约为8。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比如服务器上只是部署php环境的话,比较合适的值在2~5之间。
另外:pm.max_requests = 500,设置每个子进程重启之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求。
以上是关于php-fpm子进程数控制的主要内容,如果未能解决你的问题,请参考以下文章