对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 工具。

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

相关推荐
wenying_443237441 天前
软件测试—JMeter—跨线程组关联
jmeter·压力测试
OceanBase数据库官方博客1 天前
使用 OceanBase 进行向量 POC 的规划思路(混合搜索)
oceanbase
HBYKKJ2 天前
格雷希尔G70-370L050N定制款密封测试接头,专门针对法兰式凸缘管口而设计,解决SF6压力表的气密性测试难题
功能测试·压力测试·快速接头·气密性测试·密封测试接头
不剪发的Tony老师2 天前
SQLQueryStress:一款SQL Server查询压力测试工具
数据库·sqlserver·压力测试
OceanBase数据库官方博客2 天前
如何用PaddleOCR和OceanBase打通企业资产智能化的第一公里
oceanbase
OceanBase数据库官方博客2 天前
借助OceanBase与LangChain,实现Agent快速投入生产的系统方案
langchain·oceanbase
AI thought3 天前
C语言企业项目实战(四)
c语言·单元测试·压力测试·企业项目·工程体系
测试19984 天前
Jmeter性能压测:TPS与QPS
自动化测试·软件测试·python·jmeter·测试用例·压力测试·性能测试
弗锐土豆4 天前
使用eclipse、java、maven、j60870、oceanbase按照IEC104协议采集、存储电力数据
java·oceanbase·电表·iec104·抄表
wenying_443237445 天前
软件测试—Jmeter后置处理器—正则表达式提取器
jmeter·压力测试