当前位置: 首页 > article >正文

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


http://www.kler.cn/a/443109.html

相关文章:

  • 国产编辑器EverEdit - 扩展脚本:关闭所有未修改文档
  • c++入门之 命名空间与输入输出
  • 计算机网络之---物理层设备
  • 计算机网络之---传输层的功能
  • docker 基本使用
  • 某漫画网站JS逆向反混淆流程分析
  • 一个初始化bitmap的小算法
  • flask_sqlalchemy event监听查询事件
  • 【排序算法】——选择排序
  • 如何设置代理服务器爬取商品信息?
  • C语言专题之文件操作(巨详细)
  • uniapp springboot 上传demo
  • 【深入STL:C++容器与算法】深度解析string类的使用
  • MyBatis 常见面试问题深度剖析
  • 讯飞智文丨一键生成WordPPT
  • 深度学习的下一站:解锁人工智能的新边界
  • 渗透测试之信息收集
  • Windows设置所有软件默认以管理员身份运行
  • ElasticSearch中的深度分页问题
  • 用vscode,进行vue开发
  • 对象克隆与单例模式
  • 抓取到的1688商品数据如何用于市场分析?
  • wazuh-modules-sca-scan
  • 安装MetaMask钱包、创建新钱包、切换到以太坊主网、进行钱包充值以及转出以太资产
  • 一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器
  • 自动呼入机器人如何与人工客服进行无缝切换?