系统配置项 sys_bkgd_net_percentage 用来设置备份恢复、迁移复制等系统任务的网络带宽使用比例(上限),其实际的网络带宽依据网卡速度来进行计算。本文详细说明 OBServer 是如何获知网卡速度的,以及如何设置网卡速度。
适用版本
OceanBase 数据库所有版本。
操作方法
当前,网络带宽的获取有三种方法:
OBServer 代码中设置的默认值
DEFAULT_ETHERNET_SPEED = 1Gb/s。操作系统设备节点
/sys/class/net/$(NIC_IFNAME)/speed。$ cat /sys/class/net/bond0/speed 20000此文件中数值的默认单位为 Mbps。
/home/admin/oceanbase/etc/nic.rate.config配置文件。$ cat /home/admin/oceanbase/etc/nic.rate.config bond0=100000
OBServer 安装时不会创建该文件,由用户自行创建。文件中数值的默认单位为 Mbps,也可以写 K、M、G 或者 Kb、Mb、Gb,以上单位不区分大小写,统一按照 bit 计算。
这三种方法的生效的优先级分别是 3 > 2 > 1。
如果要修改 OBServer 感知的网卡速度,我们建议使用方法 3。OBServer 会定期检查配置文件的修改,发现更新后则重置 OBServer 的限速速率。可以从 OBServer 日志中观察修改是否生效。
[2021-06-10 11:10:49.397019] INFO [SERVER] ob_server.cpp:2018 [72580][0][Y0-0000000000000000-0-0] [lt=8] [dc=0] succeed to init_bandwidth_throttle(sys_bkgd_net_percentage_=60, network_speed=1310720000, rate=786432000):
[2021-06-10 11:14:44.905396] INFO [SERVER] ob_server.cpp:2385 [72582][0][Y0-0000000000000000-0-0] [lt=11] [dc=0] network speed changed(from=1310720000, to=1048576000)
[2021-06-10 11:14:44.905421] INFO [SERVER] ob_server.cpp:2055 [72582][0][Y0-0000000000000000-0-0] [lt=3] [dc=0] succeed to reload_bandwidth_throttle_limit(old_percentage=60, new_percentage=60, network_speed=1048576000, rate=629145600)
需要注意的是,在较旧的版本,nic.rate.config 文件中数值末尾需要有 '\n' 字符,且配置文件修改后需要重启 OBServer 才能生效。