首批通过分布式安全可靠测评,为关键业务系统打造
如何配置 OceanBase 数据库的 socket 级故障检测超时时间
更新时间:2023-11-14 03:16
本文介绍如何配置 OceanBase 数据库的 socket 级故障检测超时时间。
适用版本
OceanBase 数据库 V2.2.30 及后续版本。
配置 socket 级故障检测超时时间
假设 Server A 和 Server B 建立了若干 TCP 连接,在 A 与 B 网络隔离时,A 的包无法到达 B,B 也无法给 A 回包。如果不能快速检测到 A 到 B 的通信故障,就会引起以下两个问题:
故障切换变慢:如果 B 不可达,B 上的 leader 预期会很快切换到 C,但如果 A 不能快速发现 B 的故障,即使 leader 切到了 C,对 A 来说,服务依然没有恢复。
A 的内存占用变高:在 B 不可达之后,如果 A 还持续给 B 发包,会导致发包队列积压,从而占用很多内存。
在网络分区恢复后,出现过部分连接挂起的问题,此类问题无法通过 server 级别的错误检测来解决。
dead_socket_detection_timeout 用于指定 socket 级故障检测超时时间,默认为 10 秒。配置后立即生效。当配置项为 0 时,表示禁用 socket 级别故障检测。当配置项大于 0 时,发送端有数据超过配置项所设置的值还未收到对方的 ack 应答,就认为当前 socket 不可用。
有关dead_socket_detection_timeout的详细信息,请参见《OceanBase 数据库 参考指南》 的 系统配置项 章节。