问答 压力测试部署在 k8s 上的服务,cpu 压力上不去。

jiang_ba_tian · 2025年07月24日 · 最后由 LUKEE 回复于 2025年11月08日 · 7476 次阅读

如题:
1.压力测试 rocketmq(和 kafka 一样,消息中间件)。服务部署在 k8s 集群上。
2.jmeter 同样部署在 k8s。共 9~13 个副本数。
3.当 rocketmq 的 broker 和 proxy 副本数很少的时候,能够跑满 cpu。但是当副本数变多的时候,cpu 就跑不满了。
4.已经排查过。不是以下原因导致的
a.客户端压力没给够
b.磁盘读写瓶颈
5.我想到的唯一可能性就是 k8s 负载均衡不好,导致压力无法传到到 pod 上

大佬们提供下思路啊, 非常感谢

最佳回复

🗣 如果走的 k8s ingress 的话,可以监控下 ingress 是否有瓶颈(可以试试 svc),还有服务端对应节点物理机网卡、内核参数等

共收到 7 条回复 时间 点赞

看看压测数据和消息中间件的 partitioner 的逻辑,是不是 partition 策略导致不均衡。

2楼 已删除

🗣 如果走的 k8s ingress 的话,可以监控下 ingress 是否有瓶颈(可以试试 svc),还有服务端对应节点物理机网卡、内核参数等

服务端对应节点物理机的 CPU 应该也看下吧,我遇到的虚拟机负载不均最常见的就是虚拟机所在的物理机 CPU 已经到瓶颈了,导致这台物理机上虚拟机的 CPU 用不上去,比其他的低

孙高飞 回复

好的 我去瞅瞅

Bob 回复

感谢大佬思路。我也一直和领导强调最好用物理机压测,可惜领导不听,人微言轻

用的就是 svc

有时候中间件也会有瓶颈影响 1.可以考虑把队列去掉 看一下 cpu 能不能上去 2.如果压力机请求量过大 可能导致哪个部分打满了 直接没有处理就给返回了 这时需要排除各项指标 如数据库内存 数据库连接池 网络带宽 负载均衡内存 k8s 每个 pod 的 cpu 等

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册