Apache 2.4 много зависших потоков в режиме отправки ответа W

Я только что обновил веб-сервер Apache с 2.2 до 2.4. После обновления я получаю много зависших потоков в режиме W. Я не использую php. Застрявшие потоки возникают даже на статических html-страницах или при нагрузочном тестировании через Jmeter.

Из-за этих зависших потоков он достигает предела MaxRequestWorkers/MaxClients, и сервер перестает отвечать на запросы. Память не проблема. Так как даже во время краха сервера у меня было около 10Gb свободной памяти.

Просто чтобы убедиться, что это Apache, я переключил его обратно на 2.2 (старый сервер), и больше никаких зависших потоков!

ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid TimeOut 295 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15

StartServers 20 MinSpareServers 15 MaxSpareServers 40 ServerLimit 1024

МаксКлиентс 2048

Максрекуестворкерс 2048

MaxRequestsPerChild 5000

МаксКоннектионсПерЧилд 5000

Ниже приведен pstack для одного из потоков:

пакет 30078

#0  0x00007f0c6536df4d in __lll_lock_wait () from /lib64/libpthread.so.0
#1  0x00007f0c65369d02 in _L_lock_791 () from /lib64/libpthread.so.0
#2  0x00007f0c65369c08 in pthread_mutex_lock () from /lib64/libpthread.so.0
#3  0x00007f0c58e53f4b in yodysMtxLock () from /etc/httpd/modules/libdms2.so
#4  0x00007f0c58e518e6 in yodSlotLock () from /etc/httpd/modules/libdms2.so
#5  0x00007f0c58e50266 in yodStateIncrementSb8 () from        /etc/httpd/modules/libdms2.so
#6  0x00007f0c597ca764 in wl_increment_state_metric () from /etc/httpd/modules/mod_wl_24.so
#7  0x00007f0c597c5af9 in request_handler () from /etc/httpd/modules/mod_wl_24.so
#8  0x00007f0c668dc290 in ap_run_handler ()
#9  0x00007f0c668dc7d9 in ap_invoke_handler ()
#10 0x00007f0c668f0bca in ap_process_async_request ()
#11 0x00007f0c668f0ea4 in ap_process_request ()
#12 0x00007f0c668ed7f2 in ap_process_http_connection ()
#13 0x00007f0c668e5890 in ap_run_process_connection ()
#14 0x00007f0c58c2280f in child_main () from /etc/httpd/modules/mod_mpm_prefork.so
#15 0x00007f0c58c22a55 in make_child () from /etc/httpd/modules/mod_mpm_prefork.so
#16 0x00007f0c58c22ab6 in startup_children () from /etc/httpd/modules/mod_mpm_prefork.so
#17 0x00007f0c58c237c0 in prefork_run () from  /etc/httpd/modules/mod_mpm_prefork.so
#18 0x00007f0c668c25be in ap_run_mpm ()
#19 0x00007f0c668bbb46 in main ()

Любое руководство будет полезным.


person mike    schedule 11.07.2016    source источник
comment
Можете ли вы получить быстрый вывод pstack одного из дочерних процессов httpd?   -  person covener    schedule 15.07.2016


Ответы (1)


Конкретный поток застрял в проприетарном плагине weblogic, ожидая блокировки. Удивительно, что ему удается срабатывать даже при статических запросах. Но это то, что вам нужно обсудить с поставщиком, никто другой не может это отладить.

person covener    schedule 26.07.2016
comment
Это поведение, которое я вижу даже сейчас с последней версией модуля. - person ezra-s; 23.08.2017