php-fpm.conf有两个相当重要的参数:一个是”max_children”,另外一个是”request_terminate_timeout”.php
个人两个设置的值一个是”40″,一个是”900″,可是这个值不是通用的,而是须要本身计算的。nginx
计算的方式以下:服务器
如 果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你能够直接将”request_terminate_timeout”设 置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而若是你作不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽 带不够充足或者其余的缘由致使你的PHP-CGI可以假死那么就建议你给”request_terminate_timeout”赋一个值,这个值能够根 据你服务器的性能进行设定。通常来讲性能越好你能够设置越高,20分钟-30分钟均可以。因为个人服务器PHP脚本须要长时间运行,有的可能会超过10分 钟所以我设置了900秒,这样不会致使PHP-CGI死掉而出现502 Bad gateway这个错误。php-fpm
而”max_children” 这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会不多。设置”max_children” 也须要根据服务器的性能进行设定,通常来讲一台服务器正常状况下每个php-cgi所耗费的内存在20M左右,所以个人”max_children”我 设置成40个,20M*40=800M也就是说在峰值的时候全部PHP-CGI所耗内存在800M之内,低于个人有效内存1Gb。而若是我 的”max_children”设置的较小,好比5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间也较长。若是长时间没有获得处 理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi若是遇到了问题就会出现502 Bad gateway这个错误。性能
max_requests便是说每一个进程若超过这个数目(跟php进程有一点点关系,关 系不大),就自动杀死..我这里应该设置512的,不过懒得压力测试了,设置大一点,不过也不要设置过大,是个结构体,没测试过,接近8K到9K大小.网 上动辄设置100k,有点浪费内存了.一个进程浪费大小接近1M.按照网上经常使用配置的128个进程,大概浪费100M左右.好吧,我认可100M是白菜 价,但也别这样浪费..= =测试
max_children基本就是进程数,跟nginx的进程没有想象中的那么大,由于FPM会本身管理进程(有待考证,起码我简单浏览了一下源码,认为是这个意思).参数不宜设置过大,很占内存,进程的消耗就不用我多说了spa