【OceanBase 诊断调优】—— OceanBase 数据库网络速率配置方案

本文介绍 OceanBase 数据库网络速率配置方案。

背景

OceanBase 数据库备份功能按照网络的带宽的百分比做了速率限制。当前,网络带宽的获取有三种方法:

(1)OBServer 代码中的设置默认值 DEFAULT_ETHERNET_SPEED

(2)操作系统设备节点 /sys/class/net/$(NIC_IFNAME)/speed

(3)ob_work_dir/etc/nic.rate.config 配置文件的方式。

说明

ob_work_dir 指安装目录,如果是使用 rpm 安装的,则安装目录路径为 /home/admin/oceanbase

这三种方法的生效的优先级分别是(3)> (2) > (1)。

现在通过配置文件修改速率存在一些限制,一是配置文件的格式有约束,需要 '\n' 结尾;二是配置文件只在 OBServer 初始化的时候加载一次,后续如果修改了配置文件的值,需要重新启动才能生效。可通过动态加载配置文件的方式来实现。

动态加载配置文件

在 OBServer 增加 timer,每秒检查一次配置文件的内容是否有更新,如果有更新则重置 OBServer 的限速速率(即 observer.bandwidth_throttle_.set_rate(rate))。

配置文件名称和存放目录保持不变,仍然为:ob_work_dir/etc/nic.rate.config。代码会合入 OceanBase 数据库 V2_2_x_release 及之后的版本。

说明
  • 在 OceanBase 数据库 V3.2.3 版本 ob_work_dir/etc/ 目录下没有 nic.rate.config 文件。
  • 用户需要自行创建 nic.rate.config 文件。

配置文件格式

配置文件内容格式不再强制要求末尾必须 '\n' 结尾,具体格式为:$(IF_NAME)=$(SPEED),SPEED 可以是数字 + 单位,也可以是纯数字,纯数字情况下采用默认单位 Mbps。

配置文件示例。

复制代码
bond0=10000
bond0=10000b
bond0=10000bit
bond0=10000k
bond0=10000kb
bond0=10000kbit
bond0=10000m
bond0=10000mb
bond0=10000mbit
bond0=100g
bond0=100gb
bond0=100gbit

以上单位不区分大小写,统一按照 bit 计算。

说明

nic.rate.config 文件只支持写一行。并且 bond0 只是占位用的,并不需要和 OBServer 使用的网卡名相匹配。

日志

修改配置文件速率后可以检查日志确认配置是否正确生效。

速率公式如下。

复制代码
rate = network_speed * sys_bkgd_net_percentage

通过过滤日志中有关网络变更和带宽限制的信息。

复制代码
Bash# grep -E "network speed changed|reload_bandwidth_throttle_limit|init_bandwidth_throttle" log/observer.log.202106101*

输出结果如下:

复制代码
log/observer.log.20210610111947:[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)
log/observer.log.20210610111947:[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)
log/observer.log.20210610111947:[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)

如果日志格式不正确,会收到下面的错误日志。

复制代码
[2021-06-10 15:28:02.999345] ERROR [SERVER] get_network_speed_from_config_file (ob_server.cpp:1979) [99676][0][Y0-0000000000000000-0-0] [lt=14] [dc=0] invalid NIC Config file(ret=-4002) BACKTRACE:0xfbd452b 0x3d6c7f4 0x3eeab15 0x3eea4c2 0x3eea154 0x3ee9b90 0xadfc5c2 0xadfbc57 0xae01372 0xae0118d 0xfb3a316 0x483b9c7 0x483b929 0xf9e59de 0xf9e587d 0xb37edee 0xf9e5d3c 0xf9e5d15 0xf9e50b9 0xf9de0af

适用版本

OceanBase 数据库所有版本。

相关推荐
oradh17 分钟前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
神奇霸王龙36 分钟前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
z123456789861 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD1 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward2 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记2 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发3 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB3 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
RD_daoyi3 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎
Database_Cool_3 小时前
AI Agent 长期记忆怎么存?阿里云 PolarDB-X 对接 Mem0 记忆框架实践
数据库·阿里云