![apache2 http2 keepalives 和优雅完成](https://linux22.com/image/686323/apache2%20http2%20keepalives%20%E5%92%8C%E4%BC%98%E9%9B%85%E5%AE%8C%E6%88%90.png)
我想知道是否有人可以为我解释一些事情,因为我陷入了困境。
我正在照看一个有多个域名的网站,这些域名与相同的代码对话,根据所使用的域名提供不同的内容。我们将该网站移至 http2,并为所有域名使用通配符证书,除了我无法弄清楚的问题之外,一切似乎都运行良好。
我当前所有网站的http2
配置VirtualHost
如下配置 1
Keepalives
当服务器运行了一段时间(24 小时)后,尽管有off
和,但仍会有很多保持活动H2MaxWorkerIdleSeconds = 20
。
keepalive
我注意到,所有在请求列服务器下没有数据的进程状态 1
有时我还会发现很多“ Gracefully finishing
”进程,我用脚本手动终止它们。
这样做的实际结果是网站运行速度会变慢,而且我会用尽所有的进程。
谁能告诉我为什么设置为 keepalive 的行没有请求或 Vhost 以及为什么我会卡住“ Gracefully finishing
”没有死的进程?
配置 1
ProtocolsHonorOrder On
Protocols h2 http/1.1
H2Direct on
SSLCompression Off
H2MaxSessionStreams 200
H2SessionExtraFiles 100
H2MaxWorkerIdleSeconds 20
H2MaxWorkers 200
H2MinWorkers 10
服务器状态 1
Current Time: Wednesday, 13-Jul-2016 14:00:49 BST
Restart Time: Tuesday, 12-Jul-2016 18:29:46 BST
Parent Server Config. Generation: 4
Parent Server MPM Generation: 3
Server uptime: 19 hours 31 minutes 3 seconds
Server load: 0.49 0.52 0.50
Total accesses: 645863 - Total Traffic: 5.4 GB
CPU Usage: u406.79 s84.29 cu0 cs0 - .699% CPU load
9.19 requests/sec - 80.6 kB/second - 8.8 kB/request
132 requests currently being processed, 29 idle workers
RC_KWKWK_KK_KWKKK_KKKKWKKW.KKWK_KWKKWKKWKKWKKKK__K_KKWK_KKWKK_._
KKWKKK_K.W_KK.KKKKKKKKKK.K_KK_W.W.WKKKK_KKK_KW.K..KK_KKKK_KWKKKK
K.K__WK_KKK_KWK__KWKKKKK.__WK_K_KWKKRWKKKKKWK...................
................................................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-3 2290 0/50/3251 R 0.60 0 0 0.0 0.42 26.94 119.26.154.144 www.changeddomain.com:80 HEAD /webcams/lac HTTP/1.1
1-3 2292 1/80/3194 C 7.94 0 4172 84.9 0.69 29.33 180.76.15.8 www.changeddomain.com:443 /camper-portals HTTP/1.1
2-3 2200 0/61/4811 _ 0.76 4 0 0.0 0.90 44.57 66.249.78.18 www.changeddomain.com:80 GET /robots.txt HTTP/1.1
3-3 2294 45/74/851 K 2.96 22 270 15.9 0.07 5.31 194.203.40.135
4-3 2296 1/102/4297 W 5.10 204 7945 0.0 0.86 38.15 82.132.237.7 www.changeddomain.com:443 GET /events/ HTTP/2
5-3 2298 19/38/4996 K 0.88 275 0 0.0 0.20 54.36 2a02:c7d:6a44:3e00:17:3a28:d22c
6-3 2300 12/98/4308 W 1.19 124 0 0.0 0.33 39.88 164.39.215.246 www.changeddomain.com:443 GET /images/some-logo.png HTTP/2
7-3 2797 12/40/4700 K 0.38 83 147 0.0 0.31 47.94 217.41.3.50
8-3 2304 0/86/4820 _ 1.82 2 489 0.0 0.68 45.34 5.65.46.171 www.changeddomain.com:443 POST /_ajax_request.php HTTP/1.1
9-3 2307 17/73/4692 K 1.89 52 0 0.0 0.46 40.90 79.154.86.34
10-3 2799 2/32/2915 K 0.34 5 0 0.0 0.56 25.22 88.131.48.4
11-3 2311 0/70/4038 _ 0.95 0 0 0.0 0.61 37.22 192.243.55.136 www.changeddomain.com:80 /events/videos/video-june HTTP/1.1
12-3 2313 19/76/5080 K 1.11 192 0 0.0 0.51 55.49 90.147.34.234
13-3 2315 9/129/3168 W 2.33 30 155 1.5 0.50 32.61 86.146.7.124 www.somechangeddomain.com:443 POST /_ajax_request.php HTTP/2
答案1
您使用的是哪个版本的 apache 和 mod_http2?最初这类事情有很多问题(例如https://github.com/icing/mod_h2/issues/72)
建议您升级到最新版本(注意这需要 Apache 2.4.23):https://github.com/icing/mod_h2/releases。
Apache 中的 HTTP/2 支持仍处于实验阶段https://httpd.apache.org/docs/2.4/mod/mod_http2.html:
警告
此模块为实验性模块。与其他标准模块相比,其行为、指令和默认值在不同版本之间可能会有较大变化。建议用户查阅“CHANGES”文件以了解可能的更新。
最初有很多变化和稳定性修复。然而最近变化的速度已经放慢下来,我个人觉得它现在很稳定,但目前只在一个小型网站上运行。
答案2
非常感谢,简单的升级似乎就解决了问题。我有点不好意思没有早点升级。
谢谢
汤姆