通过ocp创建租户卡在call dbms_stats.gather_table_stats

【 使用环境 】 测试环境
【 OB or 其他组件 】OCP
【 使用版本 】observer 4.2.5 OCP 4.2.2
【问题描述】通过ocp创建租户卡在call dbms_stats.gather_table_stats,执行超时导致租户创建失败。
[obsdk] sql: call dbms_stats.gather_table_stats(‘oceanbase’, ‘__all_virtual_core_all_table’);
Set state for subtask: 9320581, operation:EXECUTE, state: FAILED

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根因分析场景: 事务执行超时报错
根因分析命令: obdiag rca run --scene=transaction_execute_timeout
日志采集场景: SQL性能问题
日志采集命令: obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”

推荐使用 obdiag 工具进行根因分析和日志采集,以便确认问题所在。上述命令将帮助您收集与 SQL 性能相关的信息,并分析事务执行超时的原因。

为了更好地诊断问题,请您提供以下信息:

  1. 执行 call dbms_stats.gather_table_stats 的具体耗时是多少?是否可以提供完整的错误日志?
  2. 是否可以提供发生问题时的 trace_id,以便更精准地定位问题?
  3. 当前集群的负载情况如何?是否有其他高负载任务在同时运行?
  4. 集群的硬件配置(如 CPU、内存、磁盘等)以及版本号是什么?
  5. 是否可以尝试再次创建租户并观察是否仍然出现超时问题?

请您根据上述命令采集日志并提供给我们,以便进一步分析问题原因。

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

1 个赞

我这个集群有68个租户了,是不是租户太多了啊

根据文档库中的信息,OceanBase 集群支持多租户架构,并且对租户的数量没有明确的绝对限制。然而,租户数量过多可能会影响集群性能和资源分配,具体影响取决于以下几个因素:

1. 集群资源是否充足

  • 每个租户都需要分配一定的计算和存储资源(如 CPU、内存、磁盘等)。如果集群的物理资源有限,而租户数量过多,可能会导致资源争用,从而影响性能。
  • 可以通过以下 SQL 查询集群资源的使用情况:
    SHOW PARAMETERS LIKE 'resource_pool_list';
    
    或者在 OCP 的“集群总览 → 租户统计”模块中查看租户的运行状态和资源使用情况(参考文档:集群总览 → 租户统计)。

2. 租户的负载情况

  • 如果每个租户的负载都很高(如频繁的读写操作或复杂查询),即使租户数量不多,也可能导致集群资源紧张。
  • 如果租户负载较低,则可以容纳更多的租户。

3. 系统配置项的影响

  • 某些系统配置项可能会影响租户数量的上限。例如,线程池大小、内存分配等。可以通过以下命令查询相关配置项:
    SHOW PARAMETERS;
    
    特别关注 scopeCLUSTERTENANT 的配置项(参考文档:配置项和系统变量概述 → 配置项 → 配置项查询)。

4. 最佳实践建议

  • OceanBase 社区版通常建议单个集群的租户数量不要超过几百个,但具体数量需要根据实际业务需求和硬件资源配置来决定。
  • 如果发现集群性能下降,可以考虑以下优化措施:
    • 扩容集群:增加 OBServer 节点以扩展集群的计算和存储能力。
    • 调整资源分配:优化租户的资源池配置,确保关键租户有足够的资源。
    • 合并租户:如果某些租户的负载较低,可以考虑将它们合并到一个租户中。

结论

68 个租户并不算多,但如果集群资源不足或租户负载过高,仍然可能导致性能问题。建议您检查集群的资源使用情况,并根据实际情况进行优化。如果仍有疑问,可以提供更多集群的具体配置信息(如 CPU、内存、磁盘等),以便进一步分析。

详情请参考:

  1. 集群总览
  2. 租户的资源管理
  3. 从租户中移除资源池
  4. 查看 OceanBase 集群资源的使用情况
  5. 租户内资源扩容和缩容概述
  6. 创建备租户前准备
  7. 配置项和系统变量概述
  8. 租户介绍
  9. 将资源池分配给租户
  10. 工作线程

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

1 个赞

:index_pointing_at_the_viewer: :index_pointing_at_the_viewer: :index_pointing_at_the_viewer: :index_pointing_at_the_viewer:

租户没上限。麻烦提供一下ocp详细报错信息

1 个赞

麻烦下载任务日志发下

查询下业务集群的这张表

select count(*) from oceanbase.__all_virtual_core_all_table;
1 个赞

就是在这一步卡住了。但是过了一段时间又可以创建成功了,可能和当时集群的负载有关系吧。
2025-03-20 17:28:26.018 INFO 10 — [pool-manual-subtask-executor16,b9c527532f334e8d,afc5f9e406cd] c.o.ocp.obsdk.connector.ConnectTemplate : [obsdk] sql: call dbms_stats.gather_table_stats(‘oceanbase’, ‘__all_virtual_core_all_table’);
Set state for subtask: 9320581, operation:EXECUTE, state: FAILED


正常情况这一步几乎是秒通过的。你那里是否是执行超时了?
手动黑屏化执行call dbms_stats.gather_table_stats(‘oceanbase’, ‘__all_virtual_core_all_table’);
看看是否有问题