首批通过分布式安全可靠测评,为关键业务系统打造
网卡 speed 值为空导致备份报错 -4006 throttle is not initialized
更新时间:2026-05-11 09:51
问题现象
机器上的 /sys/class/net/OBServer 使用的网卡 /speed 的值为空,在这种情况下 OBServer 启动时不会初始化备份恢复限速的实例,从而导致后续备份恢复相关调用失败报错 OB_NOT_INIT。
关键诊断信息
触发条件
机器上的 /sys/class/net/OBServer 使用的网卡 /speed 的值为空,同时 OBServer 启动。
事前巡检
检查所有节点的 /sys/class/net/网 OBServer 使用的网卡/speed 文件,确保其值不为空。
事后诊断
在 OBServer 的日志中搜索 throttle is not initialized 的关键字,确认是否有备份恢复限速未初始化的报错,具体报错日志信息如下:
[2025-05-08 10:41:58.954447] WDIAG [COMMON] limit_and_sleep (utility.cpp:1406) [1863819][T1004_BACKUP_ME][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=11][errcode=-4006] throttle is not initialized.(ret=-4006)
[2025-05-08 10:41:58.954467] WDIAG [COMMON] limit_out_and_sleep (utility.cpp:1567) [1863819][T1004_BACKUP_ME][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=20][errcode=-4006] failed to limit out_throttle_(ret=-4006)
[2025-05-08 10:41:58.955143] WDIAG [STORAGE] flush_buffer_ (ob_backup_file_writer_ctx.cpp:143) [1863819][T1004_BACKUP_ME][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=675][errcode=-4006] failed to limit out and sleep(ret=-4006)
[2025-05-08 10:41:58.955152] WDIAG [STORAGE] commit_file_ (ob_backup_file_writer_ctx.cpp:160) [1863819][T1004_BACKUP_ME][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=-4006] failed to flush buffer(ret=-4006)
[2025-05-08 10:41:58.955159] WDIAG [STORAGE] close (ob_backup_file_writer_ctx.cpp:86) [1863819][T1004_BACKUP_ME][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7][errcode=-4006] failed to commit file(ret=-4006)
问题原因
操作系统问题加上 OceanBase 内核 BUG 共同作用导致了此问题的发生。节点机器上的 /sys/class/net/网卡/speed 的值为空,在这种情况下 OBServer 启动时不会初始化备份恢复限速的实例,从而导致后续备份恢复的 RPC 调用时出现 OB_NOT_INIT 错误。
问题的风险及影响
备份失败。
备份恢复相关的 RPC 发送失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
影响版本
OceanBase 数据库企业版 V2.2.77 BP6(oceanbase-2.2.77-20210825181323)及之后版本、V3.1.2 BP2(oceanbase-3.1.2-20210813154332)及之后版本、V3.2.2 GA(oceanbase-3.2.2-20211130225726)及之后版本、V3.2.3 GA(oceanbase-3.2.3.0-20220419)及之后版本、V3.2.4 GA(oceanbase-3.2.4.0-100000072022102819)及之后版本、V4.1.0 GA(oceanbase-4.1.0.0-100001122023040322)及之后版本、V4.2.0 GA(oceanbase-4.2.0.0-100010082023083014)及之后版本、V4.2.1 GA(oceanbase-4.2.1.0-100000182023092722)及之后版本、V4.2.2 GA(oceanbase-4.2.2.0-100000082024011317)及之后版本、V4.2.5 GA(oceanbase-4.2.5.0-100000082024102022)及之后版本、V4.3.0(oceanbase-4.3.0.0-100000072024020200)及之后版本、V4.3.5 GA(oceanbase-4.3.5.0-100000122024123020)及之后版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.2.5 BP2(oceanbase-4.2.5.2-102000122025011711)及之后版本。
检查操作系统和网卡驱动问题,确保机器上的
/sys/class/net/网卡/speed文件值不为空,然后重启 OBServer。如果无法保证
/sys/class/net/网卡/speed文件值不为空,可以在 OceanBase 的部署目录下配置etc/nic.rate.config文件,手动指定网卡的带宽值,然后重启 OBServer,从而规避这个问题。例如手动指定网卡带宽为 10000Mb,执行如下命令:
echo "eth0=10000mbit" > /home/admin/oceanbase/etc/nic.rate.config
规避方式
检查操作系统和网卡驱动问题,确保机器上的
/sys/class/net/网卡/speed文件值不为空,然后重启 OBServer。如果无法保证
/sys/class/net/网卡/speed文件值不为空,可以在 OceanBase 的部署目录下配置etc/nic.rate.config文件,手动指定网卡的带宽值,然后重启 OBServer,从而规避这个问题。例如手动指定网卡带宽为 10000Mb,执行如下命令:
echo "eth0=10000mbit" > /home/admin/oceanbase/etc/nic.rate.config