【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】V4.2.2
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
租户是8C128G
服务器是32C512G
这个监控,cpu用到512%,是说 租户8C,用到了5.1C,还是什么?
cpu_quota_concurrency=4
px_workers_per_cpu_quota=10
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】V4.2.2
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
租户是8C128G
服务器是32C512G
这个监控,cpu用到512%,是说 租户8C,用到了5.1C,还是什么?
cpu_quota_concurrency=4
px_workers_per_cpu_quota=10
看名称应该是指租户的使用量
不晓得,这咋算的
应该是 5.1C
这我也看得到,就是算不对啊
40*100/8=500
使用量能有40?服务器一共就32C
CPU 消耗是指本租户实际的CPU消耗,本质原因是当前的linux服务器大部分都是:SMP,具体可以参考:https://blog.csdn.net/qq_42226855/article/details/112785382。
OB 租户的 CPU 本质为提供给本租户的工作线程数。
打开404
这些都懂,就想知道,512%,咋个算出来的,反推,也不对
本租户下全部线程的CPU 使用率相加之后统计为 512%。
那反推下,你看对不对
数值都有,带入公式算算?
不需要反推阿。
这个计算逻辑就是CPU消耗就是指 本租户下全部线程的CPU 使用率之和。
举个列子,top -H -p ,获取某个特定租户的所有线程的CPU 使用率之和。这个就属于单个observer的租户级别CPU使用率,如果本租户是 1-1-1, 那么就是这三个unit的CPU 使用率之后再除以3即可。平均值的问题再分布式数据库的当前没有好的解法,如果想知道具体的某个unit的CPU使用率,可以使用监控下钻功能。
给了8C,监控最大能到百分之几呢?
没有开超卖
cpu_quota_concurrency=4
px_workers_per_cpu_quota=10
给了8C,监控最大能到百分之几呢。
理论上应该是:400%, 即 8C4100% / 8 , 当前超过 400%,应该是Bug, 内部同学会进行跟进解决一下。
一种猜测是采集过程的时间差导致。
对于租户线程cpu_time的统计,每次采集都是通过依次获取每个线程的cpu_time再求和来实现的,由于遍历的过程存在前后时间差,导致每个线程的cpu_time采集区间不完全一致,致使统计结果有偏差。
建议确认一下:
1.该租户的线程总数:ps -o comm,tid -T $observer_pid | grep ‘TXXXX’ | wc -l
2.机器cpu打满的时刻,top截图