TCP-Keepalive死连接检测

TCP中有一个Keep-Alive的机制可以检测死连接,应用层如果对于死链接周期不敏感或者没有实现心跳机制,可以使用操作系统提供的keepalive机制来踢掉死链接。 在Server::set配置中增加open_tcp_keepalive=>1表示启用tcp keepalive。 另外,有3个选项可以对keepalive的细节进行调整。

Keep-Alive机制不会强制切断连接,如果连接存在但是一直不发生数据交互。Keep-Alive不会切断连接。而应用层实现的心跳检测 heartbeat_check 即便连接存在,但不产生数据交互的情况下,依然会强制切断连接。

推荐使用heartbeat_check实现心跳检测

tcp_keepidle

单位秒,连接在n秒内没有数据请求,将开始对此连接进行探测。

tcp_keepcount

探测的次数,超过次数后将close此连接。

tcp_keepinterval

探测的间隔时间,单位秒。



  • FloatingClouds2012

    这个跟heartbeat检测有什么区别?

  • 玄心河

    文档有说啊:应用层如果对于死链接周期不敏感或者没有实现心跳机制,可以使用操作系统提供的keepalive机制来踢掉死链接。

  • 如果你正在发送大数据给C,比如发送一个大文件,那个时候客户端并没有数据请求,那么算keepidle吗?

  • 日暮掩心扉。

    怎么理解死链接 客户端意外中断连接的 属于死链接 客户端连接没有中断,只是一直没有主动发消息 是不是死链接