`
stephen830
  • 浏览: 3016560 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ChannelOption.SO_KEEPALIVE, true->java socket参数详解:KeepAlive

 
阅读更多

 

当设置为true的时候,TCP会实现监控连接是否有效,当连接处于空闲状态的时候,超过了2个小时,本地的TCP实现会发送一个数据包给远程的 socket,如果远程没有发回响应,TCP会持续尝试11分钟,知道响应为止,如果在12分钟的时候还没响应,TCP尝试关闭socket连接。

 

keepalive不是说TCP的常连接,当我们作为服务端,一个客户端连接上来,如果设置了keeplive为true,当对方没有发送任何数据过来,超过一个时间(看系统内核参数配置),那么我们这边会发送一个ack探测包发到对方,探测双方的TCP/IP连接是否有效(对方可能断点,断网)。如果不设置,那么客户端宕机时,服务器永远也不知道客户端宕机了,仍然保存这个失效的连接。


当然,在客户端也可以使用这个参数。客户端Socket会每隔段的时间(大约两个小时)就会利用空闲的连接向服务器发送一个数据包。这个数据包并没有其它的作用,只是为了检测一下服务器是否仍处于活动状态。如果服务器未响应这个数据包,在大约11分钟后,客户端Socket再发送一个数据包,如果在12分钟内,服务器还没响应,那么客户端Socket将关闭。如果将Socket选项关闭,客户端Socket在服务器无效的情况下可能会长时间不会关闭。


尽管keepalive的好处并不多,但是很多开发者提倡在更高层次的应用程序代码中控制超时设置和死的套接字。同时需要记住,keepalive不允许你为探测套接字终点(endpoint)指定一个值。所以建议开发者使用的另一种比keepalive更好的解决方案是修改超时设置套接字选项。


说白了:这个参数其实对应用层的程序而言没有什么用。可以通过应用层实现了解服务端或客户端状态,而决定是否继续维持该Socket。

 

 

分享到:
评论

相关推荐

    keepalived.zip

    安装keepalived1.3.5版本所需rpm包以及对应的安装顺序 1. rpm -ivh ...2. rpm -ivh perl-Data-Dumper-2.145-3.el7.x86_64.rpm ...4. rpm -ivh keepalived-1.3.5-8.el7_6.5.x86_64.rpm

    Echo-service-using-TCP-sockets-.rar_Keepalive_Linger_SO_KEEPALIV

    Echo service using TCP sockets between two systems with socket options SO_REUSEADDR, SO_KEEPALIVE, TCP_NODELAY and SO_LINGER

    keepalived-2.2.2-1.el8.x86_64.rpm

    Keepalive服务的两大用途:healthcheck和failover ha failover功能:实现LB Master主机和Backup主机之间故障转移和自动切换 这是针对有两个负载均衡器Direator同时工作而采取的故障转移措施,当主负载均衡器失效...

    WinSock_TCP_keepalive.zip_ keepalive_Keepalive_select recv_tcp

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

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

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

    cSharp-socket-class.zip_C# socket类_C# socket详解_C# socket 编程_c#

    6. **套接字选项和属性**:Socket类有许多属性和方法用于设置和查询套接字选项,例如NoDelay(TCP_NODELAY)可以禁用Nagle算法以减少延迟,KeepAlive则可以开启心跳检测。 7. **关闭和释放资源**:完成通信后,记得...

    安装keepalived确实的rpm包

    安装keepalived时缺少的一些包,收集起来共享,包括 autoconf-2.63-5.1.el6.noarch.rpm automake-1.11.1-1.2.el6.noarch.rpm cluster-glue-1.0.5-2.el6.i686.rpm cluster-glue-libs-1.0.5-2.el6.i686.rpm cluster-...

    keepalive--aarch64.rar

    标题中的"keepalive--aarch64.rar"表明这是一个针对aarch64架构的软件或程序,使用了“keepalive”技术,并且被压缩在RAR文件格式中。RAR是一种流行的压缩格式,通常用于存储和传输大量数据,因为它可以提供较高的...

    ngx_http_upstream_keepalive-d9ac9ad67f45.tar.gz

    在 ngx_http_upstream_keepalive-d9ac9ad67f45.tar.gz 压缩包中,可能包含了该模块的源代码、编译脚本、配置文件示例以及相关的文档。开发者或运维人员可以通过分析这些文件来了解模块的内部工作原理,进行定制化...

    linux 网络驱动开发经验收集

    - `SO_KEEPALIVE`:启用或禁用TCP保活定时器,仅对TCP套接字有效,同时设置`sock->sk->sk_flag`中的SOCK_KEEPOPEN标志。 - `SO_OOBINLINE`:允许紧急数据与普通数据流合并,通过设置`sock->sk->sk_flag`中的SOCK_...

    前端大厂最新面试题-keepalive.docx

    keepAlive: true, title: '列表页' } } ``` 在模板中使用 Keep-alive: ```html <keep-alive> <!-- 需要缓存的视图组件 --> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <!-- ...

    Practical Mod Perl

    Practical Mod Perl<br><br> Copyright <br> Preface <br> What You Need to Know <br> Who This Book Is For <br> How This Book Is Organized <br> Reference Sections <br> Filesystem Conventions <br> Apache ...

    httpd-2.4.46-win64-VS16.zip

    例如,可以通过调整MaxKeepAliveRequests、KeepAliveTimeout等参数来优化连接管理。 8. **模块管理**:Apache支持丰富的模块扩展,如mod_rewrite用于URL重写,mod_php用于处理PHP脚本。你可以根据需要加载或禁用...

    Netty源码解析-服务启动过程.pdf

    - **`.childOption(ChannelOption.SO_KEEPALIVE, true)`**:设置`SO_KEEPALIVE`选项,启用TCP心跳机制。 ##### 3. **绑定端口并启动服务** ```java ChannelFuture f = b.bind(8080).sync(); ``` - **`bind(8080)`...

    linux 调优

    ### Linux内核调优知识点详解 #### 一、概述 在Linux系统中,内核参数的合理配置对于提升系统的性能至关重要。特别是在服务器环境下,合理的内核调优不仅可以提高系统的响应速度,还可以有效防止某些类型的攻击(如...

    WDT.zip_WDIOC_KEEPALIVE_wdt

    《Linux平台下的看门狗驱动——WDIOC KEEPALIVE与WDT详解》 在嵌入式系统和服务器领域,看门狗定时器(Watchdog Timer, WDT)是一种至关重要的功能,它能确保系统的稳定性和可靠性。在Linux操作系统中,看门狗驱动...

    drizzle-nginx-module-master.zip_drizzle_keepalive_nginx_nginx my

    这个模块引入了Keepalive机制,允许Nginx保持到MySQL的持久连接,从而减少了每次请求时建立新连接的开销,显著提升了系统效率。 在实际应用中,"drizzle-nginx-module"的工作流程大致如下: 1. **配置安装**:首先...

    《Oracle_11g_RAC_for_Linux_安装步骤》.pdf

    **3.1 系统参数配置** **3.1.1 关闭不必要的服务** - 使用 `chkconfig` 命令来关闭以下服务: - `autofs` - `acpid` - `sendmail` - `cups-config-daemon` - `cpus` - `xfs` - `lm_sensors` - `gpm` - `...

    netty-server中采用的分包拆包源码,java开发用于实战项目

    @Component ... .childOption(ChannelOption.SO_KEEPALIVE, true); //绑定端口,开始接收进来的连接 完整代码,下载有详细说明,使用于长报文通讯,将报文长度截取一定字节发送,便于网速传输中丢包

    Nginx安装+nginx_upstream_check_module后端健康检查

    ### Nginx安装与后端健康检查模块配置详解 #### 一、Nginx环境搭建与核心组件安装 **1.1 基础环境准备** - **操作系统**: CentOS 6.5 - **基本服务器配置**: 在安装过程中选择了“基本服务器”配置。 **1.2 安装...

Global site tag (gtag.js) - Google Analytics