oceanbase / obdiag

obdiag (OceanBase Diagnostic Tool) is designed to help OceanBase users quickly gather necessary information and analyze the root cause of the problem.
https://www.oceanbase.com/docs/obdiag-cn
Mulan Permissive Software License, Version 2
138 stars 32 forks source link

[Feature]: obdiag 支持分析指定时间段是否有租户队列积压 #316

Closed askdb closed 1 month ago

askdb commented 3 months ago

Describe your use case

obdiag xxx --from x --to y --tenant_id '[1002]'

obdiag xxx --from x --to y --tenant_id '[1002,1004]'

obdiag xxx --from x --to y --tenant_id 'ALL'

期望 obdiag 可以支持分析指定时间段段日志里某个租户/某些租户/所有租户 是否有租户队列积压。

确认的方法: 正常情况下每个租户每10秒会输出一条如下的记录 grep "dump tenant info(tenant={id:租户id," observer.log

如果对应的租户过滤日志中以下几个键值对持续非0,比如大于50(具体这个阈值可以再商榷),只要有一个键值满足即可判断有租户队列积压。

req_queue:total_size=XXX multi_level_queue:total_size=XXX group_id = *, queue_size =XXX

最终给出统计的时间范围内租户对应积压出现的次数,及其对应的 avg/min/max值。

Describe the solution you'd like

obdiag xxx --from x --to y --tenant_id '[1002]'

obdiag xxx --from x --to y --tenant_id '[1002,1004]'

obdiag xxx --from x --to y --tenant_id 'ALL'

期望 obdiag 可以支持分析指定时间段段日志里某个租户/某些租户/所有租户 是否有租户队列积压。

确认的方法: 正常情况下每个租户每10秒会输出一条如下的记录 grep "dump tenant info(tenant={id:租户id," observer.log

如果对应的租户过滤日志中以下几个键值对持续非0,比如大于50(具体这个阈值可以再商榷),只要有一个键值满足即可判断有租户队列积压。

req_queue:total_size=XXX multi_level_queue:total_size=XXX group_id = *, queue_size =XXX

最终给出统计的时间范围内租户对应积压出现的次数,及其对应的 avg/min/max值。

Describe alternatives you've considered

No response

Additional context

No response

Teingi commented 2 months ago

@jingyd66 欢迎来完成该功能,可以考虑做成基础分析项。比如obdiag analyze queue

后面就可以针对这个队列积压有可能有哪些场景,拿出来其中几个典型场景(比如集群整体SQL耗时增加)来做根因分析,这个时候做的积压分析功能就能作为基础分析来支撑你根因分析

jingyd66 commented 2 months ago

租户cpu、线程数、队列、parallel_servers_target 能给讲下他们的实现和之间的联系吗

Teingi commented 1 month ago

https://github.com/oceanbase/obdiag/pull/431