Назад | Перейти на главную страницу

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_................................`

Когда я переключаюсь на настройку PHP-FPM с Event MPM без каких-либо изменений других переменных, мои запросы в секунду резко падают, а общий ответ 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.

Спасибо!

Попробуй это:

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

Он позволяет выполнять 4k одновременных SSL-запросов с событием MPM.

Когда вы говорите, что никакие другие переменные не меняются, вы имеете в виду, что используете те же значения httpd.conf, что и prefork? Если да, то это объяснит ваши результаты.

Вам нужно установить MaxRequestsPerChild и MaxConnectionsPerChild по-разному.

MaxRequestsPerChild был переименован в MaxConnectionsPerChild, что более точно описывает, что он делает. Старое название все еще поддерживается.

MaxClients был переименован в MaxRequestWorkers, что более точно описывает, что он делает. Для асинхронных MPM, таких как событие, максимальное количество клиентов не эквивалентно количеству рабочих потоков. Старое название все еще поддерживается.

видеть: http://httpd.apache.org/docs/2.4/mod/mpm_common.html