这两天发现打开网站比较慢,检查了一个服务器,奇怪的是服务器负载正常,CPU,内存,IO这些都是正常的,想了一下应该是php-fpm的问题了。 php-fpm有两个比较重要的参数:一个是:“max_children”,一个是“request_terminate_timeout”。 我这两个设置的值是“30”,一个是“900”,但是这两个值不是通用的,而是需要自己计算。 方法如下:
如果你的服务器性能足够好的,宽带资源充足,php脚本没有系循环或bug的话你可以直接将request_terminate_timeout
设置为0,0的含义是让php-cgi一只执行下去而没有时间限制。而如果你的php脚本做不到话,也就是说你的php-cgi可能出现某个bug,或者是其他的原因导致你的php-cgi假死那么就建议你给request_terminate_timeout
附一个值,这个值可以根据你服务器的性能进行设置。一般来说性能越好你就可以设置的越高,20分钟-30分钟都可以。 而max_children
这个值有事怎么计算出来的呢?这个值原则上越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少,设置max_children
也是需要根据服务器的性能来进行设置的,一般来说一台服务器正在情况下每一个php-cgi所耗费的内存在20M左右。
dynamic模式,子进程的数量是基于此动态设置的。
pm = dynamic
start_servers
这个是php-fpm启动的进程数,默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2
min_spare_servers
这个是php-fpm最小的空闲进程数,小于这个值会自动启动php-fpm进程max_spare_servers
空闲php-fpm最大进程数,空闲进程大于这个值会自动杀死空闲的进程
ondemand模式,在进程空闲的情况下直接杀死该进程
pm = ondemand
process_idle_timeout
空闲进程被杀死的秒数,默认10smax_requests
即使说每个进程超过这个数目,就自动杀死,尽量设置大一点,不过不要设置过大,我这里设置512。
发表评论
共 0 条评论
暂无评论