ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

还在胡乱设置连接保活时间?

2022-03-26 15:01:37  阅读:171  来源: 互联网

标签:real 保活 胡乱 时间 连接池 连接 空闲 0m0.000


原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。

场景

写过一段时间代码后,对连接池应该不会陌生,MySQL、HttpClient、MQ等这些都需要连接池,而一般来说,服务端程序会自动断开长时间不交互的连接,但TCP连接本身是无法感知到对端关闭的,因此连接池组件一般都需要配置一个保活时间,连接池组件需要根据这个值来判断连接是否存活,那么该怎么配置此值呢?

检测服务端空闲断连时间

首先最容易想到的,就是使用抓包软件了,比如wireshark,根据TCP连接时会发SYN包,断开时会发FIN包,只需要用FIN包的时间减去SYN包的时间,就是服务端允许的空闲时间值,但这种方法稍微有点麻烦。
但我们可以使用telnet命令来检测,如下:

$ time telnet www.zhihu.com 443
Trying 58.49.159.14...
Connected to 1595096.sched.d0-dk.tdnsv5.com.
Escape character is '^]'.
Connection closed by foreign host.

real    0m15.128s
user    0m0.000s
sys     0m0.000s

或者使用ncat命令也可以,如下:

$ time ncat --recv-only -v www.zhihu.com 443
Ncat: Version 7.60 ( https://nmap.org/ncat )
Ncat: Connected to 58.49.157.164:443.
Ncat: 0 bytes sent, 0 bytes received in 15.12 seconds.

real    0m15.132s
user    0m0.000s
sys     0m0.031s

其中time命令显示的real就是最大空闲时间,可见知乎TCP连接的空闲时间为15s,配置到连接池里面,配稍小一点即可,如12s

总结

后面配置连接池的连接空闲时间,就不要拍脑袋了,用用这种方法吧!

往期内容

使用socat批量操作多台机器

标签:real,保活,胡乱,时间,连接池,连接,空闲,0m0.000
来源: https://www.cnblogs.com/codelogs/p/16058815.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有