我的客户端需要服务器连接长时间持续以支持旧软件。我尝试将 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 会启用该模块,您可以尝试禁用该模块并进行检查。要针对特定应用程序专门修改此类超时,您可以查看以下链接 -
答案2
您是否还查看了设置中的 MaxClients 和 MaxRequestsPerChild:?keepalive 也会影响行为。
背景