OB压力都集中到同一台

【 使用环境 】生产环境
【 OB or 其他组件 】OceanBase-ce
【 使用版本 】OceanBase 构建版本号:4.2.5.1-101000092024120918
【问题描述】ob 1-1-1 ,primary_zone :zone1,zone2,zone3 ,压力都集中到同一台,导致响应时间变长
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
ob节点 热点sql 都集中到同一台


7 个赞

根据您的描述,您遇到的问题是集群的负载不均衡,导致响应时间变长。具体表现为,尽管primary_zone被配置为跨越三个不同的zone (zone1, zone2, zone3)以实现数据分布,但实际上工作负载似乎集中在了单个节点上。针对这种情况,推荐使用obdiag工具来收集相关日志,并尝试进行根因分析。这将帮助我们理解为何会发生这种现象以及如何解决。

日志采集场景: [unit迁移/缩小 副本不均衡问题]
日志采集命令: obdiag gather scene run --scene=observer.unit_data_imbalance

执行上述命令后,obdiag会自动从指定的OceanBase集群中搜集与单位(unit)分配、副本状态等相关的诊断信息。这些信息对于理解当前集群内资源分配情况至关重要,有助于进一步定位问题所在。

此外,基于提供的信息,以下是一些补充问题,旨在帮助我们更准确地诊断并提出解决方案:

  1. 您是否能够提供具体的服务器型号及各节点的硬件配置详情?了解这些信息有助于判断是否存在硬件层面的瓶颈。
  2. 是否可以分享一下当前OceanBase集群的整体架构图或者简要描述?比如每个zone里包含哪些observer实例,它们之间是如何连接的。
  3. 发生异常前后,是否有对集群进行过任何调整或升级操作?包括但不限于增加/减少节点、修改配置参数等。
  4. 能否给出一些热点SQL的例子及其执行计划?特别是那些消耗资源较多的操作,如大规模表扫描、复杂联接等。
  5. 当前OceanBase版本(4.2.5.1-101000092024120918)是否已经应用了所有最新的安全补丁和性能优化?考虑检查官方文档或联系技术支持获取最新更新。
  6. 在观察到性能下降时,系统监控工具显示的CPU、内存、网络I/O等关键指标状态如何?

请您按照上面的日志采集命令操作后,把得到的日志压缩包发送给我们,并尽可能详尽地回答上述问题。这样我们可以更快地定位问题根源,并提供针对性的建议。

附上敏捷诊断工具 obdiag 使用帮助链接

5 个赞

这种情况可以优先使用表组功能

3 个赞

查看zone的优先顺序,如果是zone1;zone2;zone3 的一个顺序,就相当于集中式,所有的写操作都在一台主机上!所以压力比较大

4 个赞

zone1,zone2,zone3 ;random

2 个赞

表组能绑定到zone ?

2 个赞

有几个热点sql 都是单表查询 ,但是都集中到一台服务器上了,这种 可以使用表组 绑定到另外的服务器吗?

3 个赞

表不是分区表么

3 个赞

热点表多么,是否都为分区表。表组内的表会按照属性进行打散可以了解下
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005683084

3 个赞

业务都不是分区表,都是单表。我查了了表 数据量很小 几千条 ,10w+ 条,但是查询很 频繁。
半小时查询100w+次

3 个赞

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685946
参考官方介绍的分区权重方法可以有效解决这个问题

666666


请问下,ocp 监控 ,这个前台工作负载 指标 network 负载 是 什么意思?是发生在集群内的负载,还是包括集群外的负载?

1 个赞

ob社区版 4.2.5.1 打印 ash 报告 ,查出来是空的 ,是我命令不对吗?
[root@catl-eicc-zabbix01 ~]# mysql -hdbcloud-xxxx.com -P2883 -uroot@sys#catl_cloudDB_ND -p’xxxxxx’ --default_auth=mysql_native_password
mysql> use oceanbase
mysql> CALL DBMS_WORKLOAD_REPOSITORY.ASH_REPORT(‘2026-06-23 15:48:00’,‘2026-06-23 16:04:00’, NULL, NULL, NULL, ‘TEXT’, NULL, 2883, 1076);

是不是分区表?

1 个赞

不是

1 个赞

期待高手

tee ash_report_my.html
CALL DBMS_WORKLOAD_REPOSITORY.ASH_REPORT( ‘2023-09-22 10:26:47’, ‘2024-06-22 20:27:07’, NULL, NULL, NULL, ‘HTML’, NULL, NULL, NULL);
notee
命令按照这样 可以保存文件

:anger::anger::anger::anger::anger::anger: