Apache 2.4 Prefork 与 PHP-FPM 事件显示每秒请求数大幅下降

Apache 2.4 Prefork 与 PHP-FPM 事件显示每秒请求数大幅下降

在我的 Apache 2.4.2 服务器上,使用标准 mod_php Prefork 设置,这些是我的服务器状态结果

Current Time: Wednesday, 24-Oct-2012 19:36:24 CDT
Restart Time: Wednesday, 24-Oct-2012 01:27:30 CDT
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 18 hours 8 minutes 54 seconds
Total accesses: 14304233 - Total Traffic: 342.3 GB
CPU Usage: u12584.6 s721.93 cu.66 cs3.43 - 20.4% CPU load
219 requests/sec - 5.4 MB/second - 25.1 kB/request
507 requests currently being processed, 355 idle workers
______KKKKR_K______W_KKC___CKK_K_K_W__CC_KKK_KK._K_K_KK._KKKK_K_
K_____KK_KKKK_K_KK__K___KK_K___K_____CKKK_WK_K_____KCKK__K___K_K
K_CK_K_K_____K__KKKK_K__K___K_KK_K_K_KKKCK____________KK_CK__KKK
__C_KKKKKKK___CK___C_KKK_K__C__K_CK____KKK__K__K__K_K__KK_CK_K__
_KKKKK_K_W__KK______K___K__W___C_K__K____KKKKKKKK.KKKKKKKCK_K___
_C_KK_K_WK__K_KK__K__RK_KK___K____K_KK_K_K___RKC_KKKK___KKKC_K_W
_C_KK_KK__W____KC__KKK__KKK___K___KKK_KK_K_KKW__K_KR_KK_KK__KKK_
R__KKK__KKKKKK__K_KKKKK_K__K_K___KKW_________KK_K___KKK___KK.K_C
KKKKKKW_____K__K_KKC_KCKK_K_KK_K__KK__K___K__KK_KK__________KK__
__K___KK_K__K_C_KK_K___KK__KK__K__KCK_K__KK_________K_K_KK__.K__
K_CKK.CCRW__KKKKKKKKKKKC__W____K___KWK_KK_KKC______.K_K_KK_KKKC_
__KKK_W_KCKKK_K_K____CCCK__KC_KKKK_K____K_CK_K____K__K____KKK_KK
KK___K_K_K__KW__KCKKKK____WKWK__K_KKRKK__C_K_KK_KK_K__KKCC_K__C_
KK_K___K_KK______K_____CKK_K_______KK_CKCK__KKKKK____K__K..K____
__KKWK_KW__KKK__K_KKK___K_KK_KKK__KK___KK___KK_KK___KK____KKWKKC
KK_KKKK_................................`

当我切换到使用事件 MPM 的 PHP-FPM 设置且其他变量没有变化时,我的请求数/秒急剧下降并且整体 apache 响应很垃圾。

Current Time: Wednesday, 24-Oct-2012 19:51:21 CDT
Restart Time: Wednesday, 24-Oct-2012 19:48:03 CDT
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 3 minutes 18 seconds
Total accesses: 18720 - Total Traffic: 307.1 MB
CPU Usage: u16.57 s4.74 cu0 cs0 - 10.8% CPU load
94.5 requests/sec - 1.6 MB/second - 16.8 kB/request
15 requests currently being processed, 49 idle workers
PID Connections Threads Async connections
total   accepting   busy    idle    writing keep-alive  closing
11701   114 no  10  22  0   66  38
11702   134 no  5   27  0   81  48
Sum 248     15  49  0   147 86
__R_R__W___RRW________RR__R___W_W_______W_____W_____________R_R_

是否有人能想到任何明显的原因来解释为什么会出现这种情况。我可以提供任何其他额外的统计数据或服务器设置信息来提供帮助。我尝试过对所有内容进行上下调整,但没有什么能真正帮助 PHP-FPM 设置接近基本的 prefork/mod-php 设置。

谢谢!

答案1

当您说没有其他变量发生变化时,您的意思是您使用的 httpd.conf 值与 prefork 相同吗?如果是这样,是的,这可以解释您的结果。

您需要以不同的方式设置 MaxRequestsPerChild 和 MaxConnectionsPerChild。

MaxRequestsPerChild 已重命名为 MaxConnectionsPerChild,更准确地描述了它的作用。旧名称仍受支持。

MaxClients 已重命名为 MaxRequestWorkers,该名称更准确地描述了其功能。对于异步 MPM(如事件),客户端的最大数量不等于工作线程的数量。旧名称仍受支持。

看: http://httpd.apache.org/docs/2.4/mod/mpm_common.html

答案2

尝试这个:

<IfModule event.c>
ServerLimit           64
MaxClients           4096
StartServers           4
ThreadsPerChild       64
# Same as ThreadsPerChild:
ThreadLimit           64
</IfModule>

它允许使用事件 MPM 同时处理 4k 个 SSL 请求

相关内容