一台OBServer的CPU打满后出现租户SQL性能下降、OCP显示集群不可用

【 使用环境 】生产环境

【 OB or 其他组件 】OBServer & OCP

【 使用版本 】OB:社区版v3.1.4、OCP:3.3.0-20220427,OS:麒麟v10(x86_64)

【问题描述】
9月10日5:21陆续接到某OBServer节点的CPU冲高到100%的告警,同时接到OB租户CPU使用率超限告警,可以定位租户名和节点IP;直到6:41接到OCP告警:获取OB集群信息失败、OB集群状态检测失败告警。检查发现OCP上已经显示该集群不可用,所有OCP对该集群、租户的监控、操作都不可用了。

【复现路径】
通知租户项目组排查任务,透露批量有做TRUNCATE但失败了,之后应用侧无处置动作;DBA黑屏连接sys租户,检查各租户状态正常,尝试连接各租户测试查询正常,但陆续接到租户慢SQL的通知,root@sys执行show processlist会卡住。

检查CPU冲高的OBServer节点上的租户,没有sys租户,且已没有leader副本,均已自动切至其他zone。因此决定重启该节点上的OBServer进程,kill observer进程后显示 defunct,没管,尝试启动observer进程,等待一段时间后,启动成功。节点的CPU使用率回落,OCP恢复集群接管,各租户性能恢复。

疑问:

  1. OBServer的CPU使用率冲高的准确原因是什么?能否准确定位哪个租户的哪个动作导致?
  2. 单个OBServer节点的CPU冲高,为什么导致OCP的集群脱管?
  3. 单个OBServer节点的CPU冲高,涉及租户均已切主,为什么仍然会影响其SQL性能?
  4. 租户的CPU能否真正意义上做到资源隔离?避免影响整个OBServer节点,避免影响其他租户。

【附件及日志】
log.zip (14.7 MB)

OceanBase 社区已接收您的帖子,正在跟进中。