【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 数据库所有版本。

相关推荐
LUCIAZZZ3 小时前
简单的SQL语句的快速复习
java·数据库·sql
马立杰3 小时前
H3CNE-33-BGP
运维·网络·h3cne
Mason Lin3 小时前
2025年1月22日(网络编程 udp)
网络·python·udp
字节全栈_rJF4 小时前
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
网络·智能路由器·php
EchoToMe4 小时前
电信传输基本理论/5G网络层次架构——超三万字详解:适用期末考试/考研/工作
网络·5g·架构
doubt。4 小时前
8.攻防世界Web_php_wrong_nginx_config
网络·安全·web安全·网络安全
Elastic 中国社区官方博客4 小时前
使用真实 Elasticsearch 进行高级集成测试
大数据·数据库·elasticsearch·搜索引擎·全文检索·jenkins·集成测试
@_@哆啦A梦5 小时前
Redis 基础命令
java·数据库·redis
fajianchen5 小时前
MySQL 索引存储结构
数据库·mysql
没有名字的小羊5 小时前
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
运维·网络·安全