我们最近在生产服务器上切换到了 apache 2.4.18,并且我们的网站全部使用 https/ssl(带有 http2_module 的 HTTP/2),每天的访问量约为 100,000 次。
我们通过 PHP-FPM(proxy_fcgi)使用工作器 MPM 和 PHP 5.6,因为使用 https 时事件 MPM 似乎尚未正常工作。
设置如下:
<IfModule mpm_worker_module>
ServerLimit 16
StartServers 8
MinSpareThreads 64
MaxSpareThreads 256
ThreadLimit 64
ThreadsPerChild 64
MaxRequestWorkers 1024
MaxConnectionsPerChild 10000
</IfModule>
服务器重新启动后,我们的 Debian Jessie 安装上的线程数在几个小时后增加到几千个,并且 apache 错误日志充满了这些消息:
AH00288: scoreboard is full, not at MaxRequestWorkers
/server-status 似乎指示一些奇怪的“W 发送回复”线程,这些线程不执行任何操作,但运行时间很长:
W___KRK___KKC__C___KR__K__KKKRKKKKK___K__CC__KR____K__KK________
__KWR_KK_K_C__KC_KKKKKKK__KK__C_KKKKCK_KKK_C_K____WRKK_K_KKR_K_K
KK_CRKKKKRKKKKK__KK_WKCKK_KKKK_KWKKKWKKRRR__KK__K____KKKCK_KKKKK
_KK___K_W__K___CK_C___K____CRK____CKK_______KKKKKKCK___KCKK_KKK_
KK_KK_KK_KKKKK_K_KKK_KRKK_C_CKKR_C_KW__K_KWRK_KK_R_KR_K__KKK__K_
..............................C.........................W.......
...............................W..............................WW
............W.........W.........................................
.........W..........W....................W......................
.................W.......W......................................
.........................................................W......
CKKKKK_KK_KKKK_CKKKRK_RKRKKKKRRKKRKK_KC_KRKKK_KKKKKRKRRKKKKR_RK_
.............................................................W..
................................................................
................................................................
................................................................
所有“W”线程看起来都像这样:运行了 1453710297 秒,但这不可能是真的,因为服务器昨天刚刚重启,没有进行其他任何操作。
5-0 21872 0/0/0 C 0.00 1453710297 0 0.0 0.00 0.00
5-0 21872 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
6-1 17300 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
6-1 17300 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
6-1 17300 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
7-1 4298 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
7-1 4298 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
8-1 4539 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
8-1 4539 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
8-1 4539 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
9-1 21393 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
9-1 21393 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
10-1 25117 0/0/0 W 0.00 1453710297 0 0.0 0.00 0.00
最后一栏没有标明请求是什么。
加载的模块有:
apache2ctl -M
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
evasive20_module (shared)
expires_module (shared)
filter_module (shared)
headers_module (shared)
http2_module (shared)
mime_module (shared)
mpm_worker_module (shared)
negotiation_module (shared)
pagespeed_module (shared)
proxy_module (shared)
proxy_fcgi_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
socache_shmcb_module (shared)
ssl_module (shared)
status_module (shared)
我已经在网上搜索了好几天,但似乎找不到任何解决方案。非常感谢您的帮助。如果您需要更多信息、详细信息、日志,请告诉我并指出。
答案1
存在几个类似的问题,升级到最新版本的 mod_h2 似乎可以解决问题。
例如: https://github.com/icing/mod_h2/issues/72
我还要补充一点,mod_h2 开发人员(icing)是非常响应该 Git 项目上提出的此类问题,因此如果升级到最新版本无法解决问题,请在那里提出问题。由于此模块仍处于实验阶段,因此这是目前获得支持的最佳地点。