apache2 服务器 keepalivetimeout 被忽略,客户端总是在一致的时间收到 close_notify

apache2 服务器 keepalivetimeout 被忽略,客户端总是在一致的时间收到 close_notify

我的客户端需要服务器连接长时间持续以支持旧软件。我尝试将 Apache2 更改KeepAliveTimeout为 0、5、30、100 进行测试,但连接总是在约 20 秒时关闭。会话的 tshark 捕获如下所示:Tshark 捕获 HTTPS 会话。 我的/etc/apache/apache2.conf设置:

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 1100

我可以看到这些变化反映在Response Headers响应标头快照。我还检查了 TCP keepalive 配置文件:

# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
# cat /proc/sys/net/ipv4/tcp_keepalive_intvl
5
# cat /proc/sys/net/ipv4/tcp_keepalive_probes
9

我现在不知道为什么每次 SSL 连接都会在大约 20 秒后关闭close_notify。有人可以分享一些线索让我检查,以确定导致此行为的原因并可能修复它吗?如果需要任何进一步的信息,请告诉我。谢谢

我的环境详细信息:

OS: Ubuntu 20.04.4 LTS
Apache2 server version: Apache/2.4.41 (Ubuntu)
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020

答案1

这可能是由于 apache 上的 request_timeout 模块造成的。默认情况下,apache2 会启用该模块,您可以尝试禁用该模块并进行检查。要针对特定​​应用程序专门修改此类超时,您可以查看以下链接 -

https://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html#:~:text=handshake%3D0%20header%3D0%20body%3D0

答案2

您是否还查看了设置中的 MaxClients 和 MaxRequestsPerChild:?keepalive 也会影响行为。

背景

相关内容