k8s 单 pod 的性能压测发现的奇怪现象 (二)

2023-04-28 17:14:16 +08:00
 dong706
用 jmeter ( 200 并发)压测 k8s 里的 demo 服务(使用 nodeport 直连)时,不管增加多少个压测线程数( 100 到 1000 都试了),demo 服务最高只能占用 7 核 cpu ,TPS=7000 。

背景信息:服务器资源为 16 核,demo 服务的 pod 并没有设置资源限制。

ps:如果该 demo 服务在 k8s 的宿主机上直接用 java -jar 的方式运行,用 jmeter 压测( 200 并发),能压出最高 TPS=18000 ,最高能占用 11 核 cpu 。

理论上 k8s 里部署的 demo 服务性能差一点(比如降幅 10%以内)我是可以理解的,但是像现在这样不管怎么加并发数都不影响 TPS 和占用 CPU ,会是什么原因呢? (没有其他任务在跑)

求万能坛友解惑,不胜感激~~~
1497 次点击
所在节点    Kubernetes
11 条回复
RRyo
2023-04-28 17:16:33 +08:00
试试这个
github.com/wg/wrk
lostsquirrelX
2023-04-28 17:18:41 +08:00
namespace 上有没有做资源限制
dong706
364 天前
@lostsquirrelX 任何限制都没做
Tinet
364 天前
有 2 个可能:
1. nodeport 这里有网络损耗,可以通过将 pod 设置为 host 模式排除
2. pod 里面有写文件系统的读写操作,导致有 IO 瓶颈,可以通过使用 hostpath 来排除这个问题
salmon5
364 天前
”demo 服务的 pod 并没有设置资源限制“,没限制就是有限制,它有默认值。
dong706
364 天前
@Tinet 已经排除了文件操作问题。第一个我试试,谢谢
dong706
364 天前
@salmon5 这个我测试了,没限制就真的没限制了,一个 pod 能几乎用满所有 cpu (测试 sm2 加密时)
yinmin
364 天前
看看 demo 服务里的配置文件里有没有 workers 、thread 参数可以调整的。
zizon
363 天前
jinfo/jstack 看下线程数是不是一样?
可能 jvm 检测到自动配置的 GC 等线程数不同.
FabricPath
361 天前
htop 看 CPU 是集中的还是分散的
oldsix2
324 天前
kubelet 好像有些资源限制,pid 数量和 一些别的,不知道对你的 demo 有影响吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/936282

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX