Skip to content

Commit 6bb634a

Browse files
ylinzhuyanhuqing666
authored andcommitted
support tcp parameter configuration (#337)
* support tcp parameter configuration fix fix * add directory
1 parent d9bc331 commit 6bb634a

File tree

5 files changed

+78
-1
lines changed

5 files changed

+78
-1
lines changed

1.config_file/1.02_bootstrap.cnf.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,47 @@ MaxDirectMemorySize = 0.6 * dble总内存
15041504
<td ><br>
15051505
<p><sub>合法路径</sub></p><br></td>
15061506
</tr>
1507+
<tr>
1508+
<td rowspan="3" >
1509+
<sub>tcp相关参数</sub></td>
1510+
<td ><br>
1511+
<p><sub>tcpKeepIdle</sub></p><br></td>
1512+
<td ><br>
1513+
<p><sub>启用tcp-keepalive连接检测的连接空闲时间</sub></p><br></td>
1514+
<td ><br>
1515+
<p><sub>默认为30s,最大值跟使用的操作系统相关</sub></p><br></td>
1516+
<td ><br>
1517+
<p><sub>dble连接如果没有数据发送,多久后会发送Keepalive探测分组,生效条件需要指定版本jdk,具体可查看2.38章节内容</sub></p><br></td>
1518+
<td ><br>
1519+
<sub>正整数</sub><br></td>
1520+
</tr>
1521+
<tr>
1522+
<td ><br>
1523+
<p><sub>tcpKeepInterval</sub></p><br></td>
1524+
<td ><br>
1525+
<p><sub>启用tcp-keepalive连接检测的时间间隔</sub></p><br></td>
1526+
<td ><br>
1527+
<p><sub>默认为10s,最大值跟使用的操作系统相关</sub></p><br></td>
1528+
<td ><br>
1529+
<p><sub>dble连接开启tcp-keepalive探活机制后,前后两次探测之间的时间间隔,生效条件需要指定版本jdk,具体可查看2.38章节内容</sub></p><br></td>
1530+
<td ><br>
1531+
<sub>正整数</sub><br></td>
1532+
</tr>
1533+
<tr>
1534+
<td ><br>
1535+
<p><sub>tcpKeepCount</sub></p><br></td>
1536+
<td ><br>
1537+
<p><sub>启用tcp-keepalive检测启用后的最大重试次数</sub></p><br></td>
1538+
<td ><br>
1539+
<p><sub>默认3</sub></p><br></td>
1540+
<td ><br>
1541+
<p><sub>开启tcp-keepalive探活机制后,关闭一个非正常连接之前的最大重试次数,生效条件需要指定版本jdk,具体可查看2.38章节内容</sub></p><br></td>
1542+
<td ><br>
1543+
<sub>正整数</sub><br></td>
1544+
</tr>
1545+
1546+
<tr>
1547+
15071548
</tbody>
15081549
</table>
15091550

@@ -1745,6 +1786,10 @@ if enable the batch load data
17451786
#-DsqlDumpLogDeleteFileAge=90d
17461787
#-DsqlDumpLogCompressFilePath=*/sqldump-*.log.gz
17471788
1789+
#-DtcpKeepIdle=30
1790+
#-DtcpKeepInterval=10
1791+
#-DtcpKeepCount=3
1792+
17481793
```
17491794

17501795

1.config_file/1.04_db.xml.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,10 @@ db.xml包含具体的数据库组和实例配置,可以配置多组,每组可
101101
<td >keepAlive</td>
102102
<td >heartbeat子元素,心跳发送后的等待响应时间</td>
103103
<td >默认60秒</td>
104-
<td >如果dble的心跳在keepAlive时间内没有收到来自msyql的回复,那么就会关闭该连接。在下一次发起心跳的时候使用新的连接向msyql发送心跳请求。</td>
104+
<td >dble会按照heartbeatPeriodMillis的间隔向dbInstance发送心跳,发起心跳检查的时候会检查心跳连接是否可用,如果当前检查心跳连接的时间大于(上次心跳返回的正常心跳的时间+heartbeatPeriodMillis+keepAlive)的值,则杀掉该连接,在下一个周期换一个连接继续做心跳。
105+
例如:心跳周期(heartbeatPeriodMillis)10秒,第一次心跳正常,记录心跳返回的时间为13:10:00,接下来的心跳一直没有正常返回,当第九次心跳检测时,当前时间为13:11:20,大于(13:10:00 + 10s + 60s),则认为该连接不可用,则杀掉该连接,
106+
在下一个周期换一个连接继续做心跳。
107+
</td>
105108
</tr>
106109
</table>
107110

2.Function/2.000_overview.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,6 @@
7979
* [2.35 堆外内存泄露监控](2.35_memory_buffer_monitor.md)
8080
* [2.36 延迟检测](2.36_delay_detection.md)
8181
* [2.37 审计日志](2.37_sql_dump_log.md)
82+
* [2.38 tcp相关参数](2.38_tcp_parameter.md)
83+
8284

2.Function/2.38_tcp_parameter.md

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

SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
* [2.35 堆外内存泄露监控](2.Function/2.35_memory_buffer_monitor.md)
115115
* [2.36 延迟检测](2.Function/2.36_delay_detection.md)
116116
* [2.37 审计日志](2.Function/2.37_sql_dump_log.md)
117+
* [2.38 tcp相关参数](2.Function/2.38_tcp_parameter.md)
117118
* [3.语法兼容](3.SQL_Syntax/3.0_overview.md)
118119
* [3.1 DDL](3.SQL_Syntax/3.1_DDL.md)
119120
* [3.1.1 DDL&Table Syntax](3.SQL_Syntax/3.1_DDL/3.1.1_DDL&Table_Syntax.md)

0 commit comments

Comments
 (0)