对OceanBase进行 sysbench 压测前,如何用 obdiag巡检

有一些用户想对 OceanBase 进行 sysbench 压测,并向我询问是否需要对数据库的各种参数进行调整。我想起有一个工具 obdiag ,具备对集群进行巡检的功能。因此,我正好借此机会试用一下这个工具。
obdiag 功能的比较丰富,详细情况可参见" obdiag 概述"。此次,我主要试用其巡检 OceanBase 集群的功能,至于其他功能,将根据实际需求逐步进行试用。

如何安装Obdiag:

这里直接参考官网链接即可,相对比较简单,只需要执行官网上的几个命令即可。

如何配置

参考官网的步骤,执行 obdiag config 命令之后,需要填写一批信息。

因为我是用 OCP 部署的集群,所以这些信息直接在 OCP 上的集群概览里复制黏贴一下就好了。

执行完成后在 ~/.obdiag/config.yml 中会生成一份新的配置,内容就是上面填写的这些内容。

集群巡检

接下来可以对 OceanBase 集群通过执行 obdiag check 命令进行巡检了。

我这里只挑和 sysbench 有关的内容进行巡检,task 应该都在 sysbench_run 和 sysbench_free 这两个集合里了,参考自渠磊的博客

复制代码
[xiaofeng.lby@obvos-dev-d3 /home/xiaofeng.lby/.obdiag]
$cat check_package.yaml
...
sysbench_run:
  - sysbench.sysbench_run_test_tenant_cpu_used
  - sysbench.sysbench_run_test_tenant_memory_used
sysbench_free:
  - sysbench.sysbench_free_test_cpu_count
  - sysbench.sysbench_free_test_memory_limit
  - sysbench.sysbench_free_test_network_speed
...

如果想指定执行某几个特定 task 的话,可以在这个 check_package.yaml 文件里加一个自己的 task 集合,然后再执行就好了。

接下来执行一下 sysbench_free 这个 task 集合,执行过程中会打印详细的执行日志,结束之后会把巡检结果生成一个报告。

复制代码
[xiaofeng.lby@obvos-dev-d3 /home/xiaofeng.lby/.obdiag]
$obdiag check --cases=sysbench_free

[xiaofeng.lby@obvos-dev-d3 /home/xiaofeng.lby/.obdiag/tasks/observer/sysbench]
$obdiag check --cases=sysbench_free
...
2024-01-02 16:04:43,395 [INFO] export report to ./check_report//check_report_observer_2024-01-02-16-04-30.table, export type is table
If you want to view detailed obdiag logs, please run:' obdiag display-trace --trace_id 1f89be5a-5d61-3ba4-830e-9d05adf6e143 '
Check observer finished. For more details, please run cmd' cat ./check_report//check_report_observer_2024-01-02-16-04-30.table '

run 一下它的 cmd cat xxx.table 就可以看到巡检的结果的报告了。

比如 sysbench.sysbench_free_test_cpu_count 这个 task 的执行之后的 task_report 是 [critical] [remote:11.158.31.20] cpu_count/os_cpu_count is 25%,is not between 80 and 100。

猜测它大概意思就是说,如果想去做 sysbench 压测,11.158.31.20 这个节点上给 observer 的 cpu 资源建议是全部 cpu 资源的 80% 以上,但是现在实际只给了 25% 左右,有点儿少了。

比如 sysbench.sysbench_test_cluster_parameters 这个 task 执行之后的 task_report 是 [critical] [cluster:obcluster] cluster's enable_record_trace_log is true , need to change False。

应该就是让用户把 enable_record_trace_log 这个配置项改成 flase,在 sysbench 压测期间少写一些没用的 trace log。

其他的 task 不再一一列举,critical 应该是建议修改,warning 应该是推荐 DBA 同学再去检查下是否需要修改。

不过其中有一个叫 sysbench.sysbench_free_test_network_speed 的 task 执行失败了,task_report 报错是 [fail] [remote:11.158.31.20] ssh execute Exception:Execute Shell command on server 11.158.31.20 failed, command=[ethtool eth0 | grep Speed | grep -o '[0-9]*'], exception:b'Cannot get wake-on-lan settings: Operation not permitted\n'。这个感觉像是 obdiag 的 bug,通过答疑钉钉群(33254054)或者开源问答区咨询了一下,obdiag 研发同学给的反馈是这个 task 写的有点儿问题,应该是在 ethtool 能执行成功时才进行网速的检测。这里简单调整下 task,当系统无法执行 ethtool 命令时,把标准错误重定向到 /dev/null 就好了。

其他例如自定义巡检任务 task 的功能,这次就先不试用了,感觉还是有点儿麻烦的,需要先熟悉 OceanBase 的系统表和字典视图和 shell 命令,后面有机会再试着加一个自己的巡检 task 吧。

总结

最后简单总结一下:

通过 obdiag 在 sysbench 执行前进行巡检还是比较简单和便捷的,完全傻瓜式的安装和使用,最后给出的巡检结果也算比较清楚。

虽然在我的测试环境里暴露了一个网速检测时的小瑕疵,但是整体来看还是挺不错的,所以推荐大家在使用 OceanBase 进行 sysbench 压测前使用一下这个 obdiag 工具。

这个工具的功能太多,一下子试用不完,这次就先用一下其中的巡检功能,其他功能就等后面有实际需求的时候,再慢慢来试用了。

相关推荐
网易测试开发猿1 天前
吐血整理,性能测试-MySQL问题定位和分析+SQL优化(详细)
软件测试·软件测试工程师·jmeter·压力测试·性能测试·负载测试·jmeter性能测试
赵渝强老师3 天前
【赵渝强老师】国产金仓数据库的数据库对象
数据库·postgresql·oracle·oceanbase·国产数据库
LDtPLYZgoAu3 天前
基于MATLAB/Simulink的UPFC仿真探索
压力测试
OceanBase数据库官方博客4 天前
OceanBase 一体机实现极简运维 10:1数据压缩降成本
oceanbase·分布式数据库
Navicat中国4 天前
1月31日·上海 | Navicat 鼎力助阵 OceanBase 年度嘉年华
数据库·oceanbase·navicat
老纪的技术唠嗑局4 天前
不止于替换 HBase:宝付支付借力 OceanBase,构建面向未来的“TP+AP+KV+AI”统一数据基座
人工智能·hbase·oceanbase
oscar9995 天前
CI_CD 管道:是什么、为什么以及如何构建
ci/cd·单元测试·压力测试
汽车仪器仪表相关领域6 天前
双组分精准快检,汽修年检利器:MEXA-324M汽车尾气测量仪项目实战全解
大数据·人工智能·功能测试·测试工具·算法·机器学习·压力测试
汽车仪器仪表相关领域6 天前
全组分精准捕获,台架研发中枢:MEXA-ONE发动机尾气测量装置项目实战全景
大数据·人工智能·功能测试·单元测试·压力测试·可用性测试
OceanBase数据库官方博客6 天前
新闻动态|OceanBase 再入选“中国高质量软件及服务先锋榜”
oceanbase·分布式数据库