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


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

    如何安装Obdiag:

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

    如何配置

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

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

    1705632610

    1705632621

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

    集群巡检

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

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

    1. [xiaofeng.lby@obvos-dev-d3 /home/xiaofeng.lby/.obdiag]
    2. $cat check_package.yaml
    3. ...
    4. sysbench_run:
    5. - sysbench.sysbench_run_test_tenant_cpu_used
    6. - sysbench.sysbench_run_test_tenant_memory_used
    7. sysbench_free:
    8. - sysbench.sysbench_free_test_cpu_count
    9. - sysbench.sysbench_free_test_memory_limit
    10. - sysbench.sysbench_free_test_network_speed
    11. ...

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

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

    1. [xiaofeng.lby@obvos-dev-d3 /home/xiaofeng.lby/.obdiag]
    2. $obdiag check --cases=sysbench_free
    3. [xiaofeng.lby@obvos-dev-d3 /home/xiaofeng.lby/.obdiag/tasks/observer/sysbench]
    4. $obdiag check --cases=sysbench_free
    5. ...
    6. 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
    7. If you want to view detailed obdiag logs, please run:' obdiag display-trace --trace_id 1f89be5a-5d61-3ba4-830e-9d05adf6e143 '
    8. 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 就可以看到巡检的结果的报告了。

    1705632632

    比如 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 就好了。

    1705632644

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

    总结

    最后简单总结一下:

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

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

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

  • 相关阅读:
    95837-47-1,羧基衍生物ICG(indocyaninegreen)
    利用Python制作本地Excel的查询与生成的程序
    C语言的函数指针、指针函数, 函数数组
    webpack常用loader和pluglin
    C#中File类常见用法总结
    索引位图制作、C++读写流程
    MyBatis开荒
    爱上开源之golang入门至实战第四章函数(Func)(八)
    Linux系统64位AT&T系统调用汇编指令syscall
    STL算法——常用拷贝和替换算法(copy、replace、replace_if、swap)
  • 原文地址:https://blog.csdn.net/OceanBaseGFBK/article/details/136625326