apache 2.4 在 "W" 发送回复模式下有很多卡住的线程
apache 2.4 lot of stuck threads in "W" sending reply mode
我刚刚将 Apache 网络服务器从 2.2 升级到 2.4。升级后,我在 W 模式下遇到很多卡住的线程。我没有使用 php。卡住的线程甚至在静态 html 页面上或通过 Jmeter 进行负载测试时也会发生。
由于这些卡住的线程,它已达到 MaxRequestWorkers/MaxClients 限制,服务器变为 non-responsive。内存不是问题。因为即使在服务器崩溃期间我也有大约 10Gb 的可用内存。
只是为了验证它是否是 Apache,我将其切换回 2.2(旧服务器)并且不再有挂起的线程!
ServerTokens OS
服务器根“/etc/httpd”
PidFile run/httpd.pid
超时 295
保持活动关闭
最大保持活动请求数 100
KeepAliveTimeout 15
启动服务器 20
MinSpareServers 15
MaxSpareServers 40
服务器限制 1024
最大客户端 2048
MaxRequestWorkers 2048
每个孩子的最大请求数 5000
MaxConnectionsPerChild 5000
以下是其中一个线程的 pstack:
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 ()
任何指导都会有所帮助。
特定线程卡在等待锁定的专有 weblogic 插件中。令人惊讶的是,它甚至可以在静态请求上触发。但这是您需要与供应商协商的事情,其他人无法对其进行调试。
我刚刚将 Apache 网络服务器从 2.2 升级到 2.4。升级后,我在 W 模式下遇到很多卡住的线程。我没有使用 php。卡住的线程甚至在静态 html 页面上或通过 Jmeter 进行负载测试时也会发生。
由于这些卡住的线程,它已达到 MaxRequestWorkers/MaxClients 限制,服务器变为 non-responsive。内存不是问题。因为即使在服务器崩溃期间我也有大约 10Gb 的可用内存。
只是为了验证它是否是 Apache,我将其切换回 2.2(旧服务器)并且不再有挂起的线程!
ServerTokens OS 服务器根“/etc/httpd” PidFile run/httpd.pid 超时 295 保持活动关闭 最大保持活动请求数 100 KeepAliveTimeout 15
启动服务器 20 MinSpareServers 15 MaxSpareServers 40 服务器限制 1024
最大客户端 2048
MaxRequestWorkers 2048
每个孩子的最大请求数 5000
MaxConnectionsPerChild 5000
以下是其中一个线程的 pstack:
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 ()
任何指导都会有所帮助。
特定线程卡在等待锁定的专有 weblogic 插件中。令人惊讶的是,它甚至可以在静态请求上触发。但这是您需要与供应商协商的事情,其他人无法对其进行调试。