共计 830 个字符,预计需要花费 3 分钟才能阅读完成。
原创:打码日记(微信公众号 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 批量操作多台机器
正文完