K8S request limit 资源限制后,为啥 load average 还是很高

2022-03-26 00:50:03 +08:00
 dunhanson

我看对应的进程 cpu 已经最大 200%了

request limit 都设置为 2

load average

2847 次点击
所在节点    Kubernetes
20 条回复
hwdef
2022-03-26 01:01:38 +08:00
kubectl top 看一下,容器里的 top 看资源使用量不一定准确
dunhanson
2022-03-26 01:03:34 +08:00
@hwdef 我在节点上面看的,没有在容器里面
dunhanson
2022-03-26 01:06:04 +08:00
@hwdef kubectl top node 确实占用不高,为啥节点上面用 top 比较高?
hwdef
2022-03-26 01:06:27 +08:00
不是你这个 pod 的问题吧,你这 pod 确实也没有超设定值,load average 高的原因有很多,磁盘什么的也会影响,不只是 cpu 和内存,看你这是阿里云的虚拟机,虚拟机底层的主机如果负载高也会造成虚拟机的平均负载高,

总之就是原因很多,不一定是 cpu 的问题
dunhanson
2022-03-26 01:07:39 +08:00
@hwdef 但是确实这个 pod 每次启动后负载都会很高,过几分钟后降下来了
dunhanson
2022-03-26 01:09:38 +08:00
@hwdef 因为这个项目很老,代码比较冗余,我现在代码在精简,有点效果,之前 top 启动的时候负载超过 200 300 ,现在<60 。但还是很高,cpu 总共也就 4 线程
hwdef
2022-03-26 01:11:45 +08:00
emmmm 容器优化 jvm 我也不熟,,我是写 go 的,,,感觉 java 上云还是容易水土不服,,
dunhanson
2022-03-26 01:19:03 +08:00
@hwdef 哈哈 难搞
disk
2022-03-26 01:24:21 +08:00
你这个 java 程序是多线程的吗? k8s 只能限制容器的 cpu 使用时间,如果你有多个线程在等 cpu ,负载一样会很高。
dunhanson
2022-03-26 01:33:05 +08:00
@disk

用的基于 tomcat7 的镜像,然后启动脚本是这样子,主要是为了方便看日志

chmod 777 /usr/local/tomcat/bin/catalina.sh
sh /usr/local/tomcat/bin/startup.sh
tee /opt/health.sh <<-'EOF'
while true
do
sleep 1s
if test $( ps -aux | grep java | grep tomcat | wc -l ) -eq 0
then
ps -aux | grep catalina.out | grep -v grep | awk '{print$2}' | xargs kill -9
fi
done
EOF
sh /opt/health.sh &
tail -f /usr/local/tomcat/logs/catalina_${HOSTNAME}.out
dunhanson
2022-03-26 01:33:43 +08:00
CMD ["sh","/usr/local/tomcat/bin/tomcat.sh"]
ClericPy
2022-03-26 10:39:38 +08:00
同 9 楼

load average 貌似和你任务对系统 CPU 的需求, 不是实际使用情况, 堵的越惨这东西越高. 而容器外面限制资源使用, 该堵的是不是还在那等着
dunhanson
2022-03-26 11:49:15 +08:00
@ClericPy 看来没有什么有效的办法了,难搞
vhwwls
2022-03-26 11:59:07 +08:00
没看出来有啥问题,Pod 占用是正常的,节点上的 Load average 高是别的原因,vmstat 看看
rrfeng
2022-03-26 12:04:02 +08:00
你需要去了解一下 cpu usage(utilization) 和 load 的区别。
ddmasato
2022-03-26 12:17:14 +08:00
是磁盘 io 堵住了吧
24bit
2022-03-26 12:46:39 +08:00
会不会是 java 没识别到分配的 cpu 数,线程池按照虚拟机总 cpu 数创建了,导致线程太多?
dunhanson
2022-03-26 13:46:16 +08:00
@ddmasato 正常的
dunhanson
2022-03-26 14:00:19 +08:00
@vhwwls 用 vmstat 看 us 比较高,可以到 80 多,但 top 的 wa 又比较低
lhx2008
2022-03-26 19:31:31 +08:00
看 top -H 有多少 Running 的线程,如果很多的话,你调小 limit 反而会把 load 搞高

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

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

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

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

© 2021 V2EX