客户端通过 tcp 套接字使用 ssl (openssl) 连接到服务器。
如果没有正在进行的通信,2 小时后(加上几分钟),客户端会抱怨“套接字错误。对等方重置连接”。
我已经通过让客户端在收到此警告时打开新连接的方式进行了几天的测试,并且该模式每两个小时重复一次。我已经查看了客户端和服务器上的 cron 作业,但看不到任何可能正在执行此操作的作业。
请注意,套接字服务器 (reactphp) 不知道套接字曾经被关闭。
什么可能导致连接每两小时重置一次?是否有可能这样做的内核配置设置?
TCP保活。如果连接未使用,则在 2 小时后断开连接。可以很容易地改变。见http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepalive.html
简而言之,/proc/sys/net/ipv4/tcp_keepalive_time
可以根据需要从默认的 7200 更改通过公开的内核可调参数“tcp_keepalive_time” 。