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