有什么目的有一个[低] TCP空闲超时? 例如,为什么在防火墙或负载平衡器上有60秒的超时? 是内存pipe理还是性能优化? 高延时是否存在安全风险?
如何确定最大设置是合适的还是可接受的?
长时间的空闲连接可能意味着连接断开(任一侧的应用程序崩溃,networking电缆拔出等),但是资源仍将被分配,这意味着:
最后一个也会发生,如果你设置一个较低的TCP空闲超时时间,因为有些系统会简单地从TCP表中断开连接,而另外一些则将RST数据包发送到另一个部分。
根据您pipe理的通信types使用空闲超时(例如,Apache服务器的默认超时时间为5分钟,所以没有连接会被闲置超过5分钟[和几秒钟]),但从来没有build立一个较低的(或兴奋地相同)TCP空闲超时比您的应用程序的超时。 至less每隔几分钟执行一次长连接的keepalive,以确保连接处于活动状态(在套接字创build时定义的TCP keepalive有两个小时的超时时间,我认为这太高了)。 用户交互式软件(如ssh会话,远程桌面,FTP)会在用户阅读时闲置几分钟,所以我不会less于15分钟。
注意:除非高度密集的连接不会闲置超过几秒钟,否则我不会推荐几分钟以下的TCP空闲超时。 如果可能的话,根据你的stream量设置不同的空闲tiemouts(即6分钟的networking服务器,15的SSH会话等)。
如果需要更高的超时时间(有人请求“永久的”TCP连接),请尝试在应用程序层使用keepalive。