文档首页/ 数据仓库服务 GaussDB(DWS)/ 更多文档/ 用户指南(巴黎区域)/ 常见问题/ 数据库连接/ 为什么在互联网环境连接GaussDB(DWS)后,解绑了EIP不会立即返回失败消息?
更新时间:2024-06-11 GMT+08:00

为什么在互联网环境连接GaussDB(DWS)后,解绑了EIP不会立即返回失败消息?

这是因为解绑了EIP后,会导致网络断开。但是此过程中,TCP协议层因keepalive等的设置,无法及时识别物理连接已经故障,导致gsql,ODBC和JDBC等客户端无法及时识别网络故障。

客户端等待数据库返回的时间与keepalive参数的设置相关,具体可以表示为:keepalive_time + keepalive_probes * keepalive_intvl。

因为keepalive参数涉及到网络的通信的稳定性,所以可根据具体的业务压力与网络状况进行调整。

如果是Linux环境,使用sysctl命令修改如下参数:

  • net.ipv4.tcp_keepalive_time
  • net.ipv4.tcp_keeaplive_probes
  • net.ipv4.tcp_keepalive_intvl

以修改net.ipv4.tcp_keepalive_time参数值为例,执行如下命令将参数值修改为120秒:

sysctl net.ipv4.tcp_keepalive_time=120

如果是Windows环境,修改注册表“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters”中的如下配置信息:

  • KeepAliveTime
  • KeepAliveInterval
  • TcpMaxDataRetransmissions(相当于tcp_keepalive_probes)

如果以上参数不在注册表“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters”中,可以在注册表编辑器对应路径下右键单击新建 > DWORD值进行添加。