遇到上述告警信息时一般需要登录 OCP 查询性能监控进行确认。确认顺序为:

  1. 目标服务器维度确认。

  2. 目标租户维度确认。

登录 OCP 后,查看集群的性能监控,详细操作信息,请参见 。

性能监控 界面下方搜索到的指标中关注:QPS、查询响应时间、TPS 和事务响应时间这四个指标,并找到告警对应时间点,确认告警是否符合预期。一般负载异常可能包含以下几种对应监控指标变化情况:

  • QPS、查询响应时间和事务响应时间在告警时间范围存在升高尖刺。当 TPS 变化不大,时间轴上 QPS 与事务响应时间尖刺发生较其他指标略早时,这种情况通常是由查询压力增大或 SQL 中存在烂 SQL 引起的,需使用 OCP 监控中的 Slow**SQL** 功能对具体集群中目标 Server上的慢查询进行排查。

  • 查询响应时间、TPS和事务响应时间在告警时间范围存在升高尖刺。当 QPS 变化不大,时间轴上 TPS 与事务响应时间尖刺发生较其他指标略早时,这种情况通常是由于写入压力增大引起,需使用 OCP 监控中的 Slo**wSQL** 功能对具体集群中目标 Server 上执行的事务进行确认。

在使用 OCP 租户监控查询租户压力指标之前,需要先登录 sys 租户,通过下面的 SQL 确认目标服务器涉及租户,注意语句中的版本差异:

之后进入 OCP,查看租户的性能监控,详细操作信息,请参见 性能监控

在目标租户的 性能监控 界面中的指标中关注:QPS、响应时间、TPS 和事务响应时间这四个指标,并找到告警对应时间点,确认是否符合预期。一般出现负载异常时,目标租户级别监控指标变化情况可能包括以下几种情况:

  • QPS、响应时间、TPS 和事务响应时间这四个指标在告警监控时间范围内存在升高趋势,变化趋势上与目标服务器节点级别同时间的监控指标对应。这种情况下,说明租户读写压力较之前有增长,需联系业务人员进行行为确认。如果确认读写压力是正常增长,则需对受影响的租户进行扩容。详细操作信息,请参见 章节。

  • QPS、响应时间、TPS 和事务响应时间这四个指标在告警时间范围内存在升高趋势,但变化趋势较目标服务器级别同时间的监控指标趋势明显小。在这种情况下,说明租户读写压力较之前略有增长,需要对租户的 Primary Zone 进行合理配置。

进入 OCP,查看集群的性能监控,详细操作信息,请参见 性能监控

在目标集群的 性能监控 界面下方搜索到的指标中关注:QPS、查询响应时间、TPS 和事务响应这四个指标,并找到告警对应时间点,确认是否符合预期。一般负载异常时,集群级别监控指标变化情况可能包括以下几种情况:

  • QPS、查询响应时间、TPS 和事务响应这四个指标在告警时间范围内存在升高趋势,变化趋势上与目标服务器级别同时间的监控指标对应。在这种情况下,说明集群读写压力较之前有增长,需联系业务人员进行行为确认。如确认为读写压力正常增长,需先对集群进行 OBServer 进行扩容,详细操作信息,请参见 章节。完成集群扩容后再对受影响租户进行扩容,详细操作信息,请参见 租户管理 章节。

通过对目标服务器、租户和集群的压力确认,基本上可以定位引起负载异常的原因。总结起来一般有烂 SQL、租户 Primary Zone 配置不当和业务压力正常增长这三种原因,针对不同的原因有不同的解决和避免的办法。

烂 SQL

租户 Primary Zone 配置不当

如负载异常原因为租户 Primary Zone 配置不当,可先对租户当前的 Leader 分布进行确认,具体 SQL 语句如下所示:

通过租户分布查询,确认当前租户的 Leader 分布是否为预期的 Zone,如果业务使用了分区表且支持 Leader 打散,可通过租户切主,将 Primary Zone 设置为可使用的所有 Zone,详细操作信息,请参见 章节。

配置租户 Primary Zone 前需通过以下语句确认集群自动均衡参数是否设置为 True

  1. -- 返回为 True 即为打开,否则需将其设置为 True

租户打散是将 Primary Zone 设置到可选择 Zone 上,不同 Zone 之间用逗号分隔开,示例语句如下所示:

租户切主是将 Primary Zone 从某个 Zone 上设置到另一个 Zone 上,示例语句如下所示:

  1. -- 假设之前的 Primary Zone Zone2;
  2. obclient> ALTER TENANT tenant_name primary_zone="zone2";

当 OceanBase 集群内存在多租户共享集群资源时,建议将不同租户的 Leader 设置到不同的 Zone 上,避免租户间相互影响。

业务压力正常增长

如果是负载异常原因导致业务压力正常增长,需要针对当前集群资源使用情况,对租户进行扩容,详细操作信息,请参见 租户管理 章节。但如果集群中资源已经使用饱和,则需要先对集群进行扩容。

只有在普通租户使用了 OceanBase 数据库分区表,且租户 Primary Zone 打散到了所有 Zone 上时,扩容操作带来的性能增长才会呈现出线性增长趋势。比如 1-1-1 的集群扩容到 2-2-2 的集群,性能容量提升约为 50%。但如果业务使用的是单表,且租户 Primary Zone 仅设置了一个 Zone 时,扩容操作带来的性能增长并不是线性的,此时集群的压力分布取决于不同单表 Leader 上的读写压力大小,此时合理配置 Primary Zone,将不同单表的 Leader 分布到不同 Zone 中,可在一定范围内提示集群性能。