最近我的服务器(i7-2600 @ 4×3.4ghz,8GB Ram)正在得到真正的高负载平均值。 我caching了最受欢迎的页面,并尝试删除它们以检测它们是否是错误,但是没有发生重大变化。
当我重新启动我的服务器时,平均负载低于1.0,然后突然它开始增长,并进入6.0 – 25.00,我得到504网关超时错误和ssh变得非常慢,它会导致很多问题。
我认为这与我的php-fpmconfiguration有关,因为我一直使用mysqltuner.pl,并按照说明那里,也正如我所说的,我caching和删除了最stream行的网页几分钟,他们也有严重的查询左join等,并没有给予重大的变化,我的意思是负载可能会下降约5%,但那不是我以后。
我的网站每5分钟获得约500个独特用户(谷歌分析实时统计),每秒约5-15个综合浏览量。
所以这里是我的php-fpmconfiguration,任何人都可以build议什么调整?
下午=dynamic
pm.max_children = 500
pm.start_servers = 400
pm.min_spare_servers = 50
pm.max_spare_servers = 500
pm.max_requests = 0
这是非常不可能的,你有足够的内存来运行500个PHP进程。 在我的盒子里,每个盒子通常占用40-80MB,取决于他们正在做的事情。
那么这里发生的是,当你启动PHP时,它会尝试启动自己的400个副本,就像你指定的那样。 但是你至less需要两倍的RAM空间! 所以机器很快开始交换,并停下来。
大幅降低这些数字,直到你完全处于记忆的范围之内。 您不需要运行400个同步进程来处理每秒5-15个综合浏览量。
如果PHP中存在内存泄漏,或者您正在使用其他PHP模块,则还应该为pm.max_requests设置一个值。 不幸的是这些太常见了。
为了让您的服务器重新受到控制,请尝试以下操作:
pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 10 pm.max_spare_servers = 50 pm.max_requests = 500
这给你足够的空间来处理正常的stream量和高达5倍的正常负载峰值。 如果你开始pm.max_children多,并且看到关于用完儿童的日志条目,则可以提高pm.max_children ,但是在你做之前检查你的空闲RAM; 如果你到了这一点,你可能不得不升级服务器。