`
j2002sx
  • 浏览: 35348 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

对TCP选项keepalive使用的疑问

阅读更多
我设计的服务器加入了keepalive选项的支持,这个保活机制在内网环境测试是OK的。
前两天在生产环境,出现了有几个连接的保活没起作用的情况,client机器重启后,server端的socket一直没有断开,现在怀疑是和keepalive设置的值有关,以下是我的设置:net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 2
net.ipv4.tcp_keepalive_time = 300这几个选项的配置有关。

目前解决的办法是在服务器上设置了个命令,可以向所有连接发测试包,如果客户端重启了,
回收到RST包,之后socket会断开。

keepalive选项有机会还要在生产环境测试下,挺想不通的:)
分享到:
评论

相关推荐

    linux tcp keepalive存活代码设置

    TCP存活可以通过修改系统设置或者在tcp...设置keepalive之后,若tcp断开,则在使用该socket读写时立即失败。全部源代码,直接gcc命令就可以编译;运行本测试代码,然后拔掉主从之间的网线,主和从都可以检测到tcp断开。

    在Linux环境下使用TCP的keepalive机制

    Linux内置支持keepalive机制,为了使用它,你需要使能TCP/IP网络,为了能够配置内核在运行时的参数,你还需要procfs和sysctl的支持。  这个过程涉及到keepalive使用的三个用户驱使的变量:  tcp_keepalive_time...

    WinSock_TCP_keepalive.rar_Keepalive_tcp 心跳_心跳 C_心跳包 c+_心跳包机制

    例如,可以使用`setsockopt()`函数,配合`SOL_SOCKET`和`SO_KEEPALIVE`选项,以及`TCP_KEEPCNT`、`TCP_KEEPIDLE`和`TCP_KEEPINTVL`来分别设置上述三个参数。 在实际应用中,理解并正确配置Keepalive参数至关重要。...

    tcp_keepalive:测试tcp保持活动模式

    TCP_KEEPIDLE - tcp_keepalive_time (闲置多久时间开始传ACK)一般linux是预设socket不使用keepalive的,所以要在code开启socket时就设定(类似example setsockopt),linux判定断线之后kernel内部直接关闭连结,在上层的...

    TCP Keepalive和HTTP keepalive是一个东西吗 617 - 629

    如果对端程序是正常工作的,当 TCP 保活的探测报文发送给对端,对端会正常响应,这样 TCP 保活时间会被重置,等待下一个 TCP 保活时间的到来。 TCP Keepalive 和 HTTP Keep-Alive 是两个不同的概念,它们的实现机制...

    WinSock_TCP_keepalive.zip_ keepalive_Keepalive_select recv_tcp

    设置好keepalive以后,我们通过实验来看看当client异常退出或是网络断掉的情况下,keepalive怎么通知我们异常断开的情况。这里采用select模式,实验环境为XP系统和Win7系统,几种情况返回值如下: 1. 正常断开 ...

    W5500 Keepalive 应用笔记

    "W5500 Keepalive 应用笔记"是一个针对W5500网络接口芯片的专题,旨在探讨如何在TCP连接中有效地使用Keepalive机制。W5500是一款集成的以太网控制器,广泛应用于嵌入式系统,如物联网设备和工业自动化。 TCP ...

    TCP保活定时器的使用

    要自定义保活定时器参数,可以使用`TCP_KEEPIDLE`、`TCP_KEEPINTVL`和`TCP_KEEPCNT`选项: ```c struct linger linger_opt; linger_opt.l_onoff = 1; // 启用linger选项 linger_opt.l_linger = 0; // 立即关闭 ...

    springboot-keepalive设置测试

    在IT行业中,Spring Boot是一个广泛使用的Java框架,用于快速开发微服务应用。它极大地简化了配置,使得开发者能够更专注于业务逻辑。在这个“springboot-keepalive设置测试”项目中,我们将关注的是如何在Spring ...

    IEC61850-kit Stack configuration options

    - **注意事项**:该选项会增加代码大小并可能对性能产生负面影响,因此不建议在实际应用中使用。 #### ISO8073 (COTP) 层配置选项 **CONFIG_COTP_MAX_TPDU_SIZE (客户端/服务器)** - **描述**:设定 COTP 协议层的...

    node-net-keepalive:提供对节点js的套接字选项(如TCP_KEEPINTVL,TCP_KEEPCNT和TCP_USER_TIMEOUT)的高级访问

    :link: 净keepalive 使用模块的Node缺少的( TCP_KEEPINTVL和TCP_KEEPCNT ) SO_KEEPALIVE套接字选项设置程序和获取程序。 经过测试 :penguin: linux & :green_apple: osx ( amd64和arm64都应该) :smiling_face_...

    Delphi之TClientSocket和TServerSocket进行TCP长连接通讯使用KeepAlive自动发送心跳包检测断网

    Delphi之TClientSocket和TServerSocket进行TCP长连接通讯,使用KeepALive自动发送心跳包检测断网,并实现断线重连,经测试可以及时检测到拔掉网线断网情况,具有较高的参考价值

    判定断开前的KeepAlive探测次数

    使用`sysctl net.ipv4.tcp_keepalive_cnt`命令,可以查看当前系统中TCP KeepAlive探测的默认次数。 2. **临时修改**: 若要临时改变探测次数,可使用`sysctl -w net.ipv4.tcp_keepalive_cnt=<新值>`命令。例如,...

    socket的keepalive介绍

    设置Keepalive的函数通常包括`setsockopt()`,在套接字层(`SOL_SOCKET`)和TCP层(`SOL_TCP`)分别设置不同的选项。例如: ```c int keepalive = 1; // 开启Keepalive int keepidle = 60; // 60秒后开始探测 int ...

    TCP协议的KeepAlive机制与HeartBeat心跳包.docx

    KeepAlive

    TCP socket通信实例(心跳)

    通过对TCP Socket通信中的KeepAlive机制进行深入分析,我们不仅了解了其实现原理,还掌握了如何根据实际需求对其进行配置。此外,我们还探讨了心跳包的设计理念及其在实际应用场景中的重要作用。通过这些技术手段,...

    怎样及时检测出非正常断开的TCP连接.DOC

    第二种方法简单可靠,只需对 TCP 连接的两个 Socket 设定 KeepAlive 探测。 在 Windows 2000 平台下,可以使用 WSAIoctl 函数来设置 KeepAlive 探测。首先定义一个结构体 TCP_KEEPALIVE,用于存储 KeepAlive 的配置...

    nginx+keepalive使用文档

    nginx+keepalive使用文档,已读,亲测,完整,绝对超值。。。

    WinSockTCPkeepalive的原理学习及使用方法借鉴.pdf

    这段代码设置了socket选项,使得TCP连接启用keepalive功能。然而,系统默认的参数(如2小时的空闲时间)可能不满足具体应用需求。为了调整这些参数,可以使用`WSAIoctl`函数和`SIO_KEEPALIVE_VALS`控制代码,结合`...

    keepalive.zip

    在网络编程中,开发者也可以在应用程序级别实现Keepalive功能,这通常涉及TCP套接字选项的设置。例如,在Python的socket库中,可以通过`setsockopt`函数来启用和配置Keepalive: ```python import socket sock = ...

Global site tag (gtag.js) - Google Analytics