2.38 tcp相关参数
2.38.1 介绍
dble在启动时会创建与mysql通信的连接池,但是这些连接可能在tcp三次握手时由于某些情况丢失了第三次握手的信息。此时这些连接被mysql直接丢弃, 而在dble侧并无感知,导致dble的连接池的连接的数量达不到预期设置的值,导致dble出现异常。为了解决这个问题,linux本身就有keep-alive机制, 并提供对应参数控制,但是这是系统级别参数,一旦直接修改可能影响其他应用影响面较大。dble在bootstrap.cnf中提供相关参数配置并且只影响dble内的连接。
2.38.2 jdk版本要求
oracle jdk 1.8-261及其以上版本
openjdk 1.8-272及其以上版本
2.38.3 相关配置
-DtcpKeepIdle=30 #启用tcp-keepalive连接检测的连接空闲时间
-DtcpKeepInterval=10 #启用tcp-keepalive连接检测的时间间隔
-DtcpKeepCount=3 #启用tcp-keepalive检测启用后的最大重试次数
2.38.4 使用场景
1.检测并关闭tcp三次握手中丢失了第三次握手信息导致的半连接
2.检测挂掉的连接,如导致连接挂掉的原因很多,如服务停止、网络波动、宕机、应用重启等
3.防止因为网络不活动而断连,如使用NAT代理或者防火墙等
2.38.5 注意事项
1.dble会在启动的时候校验jdk版本,如果版本不符合要求dble会给出相应warn日志,并且配置文件的这三个参数不会生效,dble可以正常启动
2.该功能属于试用功能,可能导致后端连接异常断开,可通过调大tcpKeepIdle,tcpKeepInterval,tcpKeepCount的值来规避问题