问题现象
OceanBase 集群出现如下告警信息:
[2022-05-31 11:48:32.011326] ERROR easy_connection_on_timeout_conn (easy_connection.c:2385) [31437][0][Y0-0000000000000000] [lt=9] [dc=0] Failed to do check_ack_timeout, and will destroy connection(12.1.xxx.xx:2882_12.1.xxx.xxx:15818_4259_0x7fb8eefa6a60 tp=0 t=1653964195313273-1653968901766679 s=0 r=0 io=1417568/10328696279 sq=10326981748). BACKTRACE:0xd31e8da 0x3491732 0xd246472 0xd248866 0xd453b3c 0xd6b9dd9 0x330fc43 0x3323b7c 0x334f31e 0xd6bbd59 0x7fb
影响版本
OceanBase 数据库 V2.2.77 版本。
问题原因
当 OBServer 给远端端口回应数据报文时,远端端口收到数据包后正常会回应一个 ACK 报文,如果 OBServer 无法收到这个 ACK 报文,且持续达到 dead_socket_detection_timeout 设置的时间后,OBServer 就会出现该告警,出现该问题一般是因为网络问题(远端程序回应了 ACK 但是没有到达 OBServer 端)或者远端程序 hang(程序不回应 ACK)等情况。 dead_socket_detection_timeout 配置项默认值为 10s,更多关于该配置项的介绍请参考 dead_socket_detection_timeout
解决方法
一般出现该问题需要排查网络连接是否出现问题。