Мы запускаем Drupal 6.26, PHP 5.3 на Apache 2.2 mysql5.5. На веб-сервере Prod есть балансировщик нагрузки, работающий с двумя серверами приложений PROD. Веб-сервер Prod отключился с httpd.exe, используя 100% ЦП.
Ниже приводится выдержка из аварийного дампа. Это та ветка, где зависает Apache.
. 0 Id: 126c.c20 Suspend: 0 Teb: 7efdd000 Unfrozen
ChildEBP RetAddr
000cfd60 765615e9 ntdll!ZwWaitForMultipleObjects+0x15
000cfdfc 762319fc KERNELBASE!WaitForMultipleObjectsEx+0x100
000cfe44 762341d8 kernel32!WaitForMultipleObjectsExImplementation+0xe0
000cfe60 6ff1dc10 kernel32!WaitForMultipleObjects+0x18
WARNING: Stack unwind information not available. Following frames may be wrong.
000cfe9c 6ff20655 libhttpd!ap_regkey_value_remove+0x710
000cfec4 004017c7 libhttpd!ap_mpm_run+0x1c5
000cff14 00401f73 httpd+0x17c7
000cff88 7623336a httpd+0x1f73
000cff94 776a9f72 kernel32!BaseThreadInitThunk+0xe
000cffd4 776a9f45 ntdll!__RtlUserThreadStart+0x70
000cffec 00000000 ntdll!_RtlUserThreadStart+0x1b
Этот код выглядит как блокирующий (то есть блокирующий в смысле взаимного исключения) код, но его трудно точно узнать. Как указано в предупреждении, единственный способ убедиться, что вы получаете правильную информацию, - это запустить Apache под отладчиком при возникновении сбоя. Этот же метод также гарантирует, что вы сможете получить другую важную информацию о состоянии системы.
Конечно, практическое решение может заключаться в том, чтобы просто бросить обезьянок в пишущие машинки и посмотреть, не сможете ли вы таким образом избавиться от проблемы. без необходимость прибегать к чему-то столь же болезненному, как отладка трассировки Apache в Windows. Например, вы можете попробовать другой дистрибутив стека WAMP или переключить операционные системы на серверах (если это возможно). В конечном счете, это очень крепкий орешек, поэтому оба пути - поиск и решение проблемы или ее обход - заслуживают всестороннего рассмотрения.
Как бы то ни было, в Linux эти проблемы чаще всего возникают вокруг кешей opcache, оптимизаторов и (де) обфускаторов. Если вы используете такой код, например. IonCube, ZendGuard, APC, расширение кэша Windows для PHP и т. Д. - отключите его на час или два и посмотрите, исчезнут ли проблемы.