我看对应的进程 cpu 已经最大 200%了
request limit 都设置为 2
load average
kubectl top命令cpu利用率正常,但是load average还是很高
1
hwdef 2022-03-26 01:01:38 +08:00
kubectl top 看一下,容器里的 top 看资源使用量不一定准确
|
4
hwdef 2022-03-26 01:06:27 +08:00
不是你这个 pod 的问题吧,你这 pod 确实也没有超设定值,load average 高的原因有很多,磁盘什么的也会影响,不只是 cpu 和内存,看你这是阿里云的虚拟机,虚拟机底层的主机如果负载高也会造成虚拟机的平均负载高,
总之就是原因很多,不一定是 cpu 的问题 |
6
dunhanson OP @hwdef 因为这个项目很老,代码比较冗余,我现在代码在精简,有点效果,之前 top 启动的时候负载超过 200 300 ,现在<60 。但还是很高,cpu 总共也就 4 线程
|
7
hwdef 2022-03-26 01:11:45 +08:00
emmmm 容器优化 jvm 我也不熟,,我是写 go 的,,,感觉 java 上云还是容易水土不服,,
|
9
disk 2022-03-26 01:24:21 +08:00 via iPhone
你这个 java 程序是多线程的吗? k8s 只能限制容器的 cpu 使用时间,如果你有多个线程在等 cpu ,负载一样会很高。
|
10
dunhanson OP @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 |
12
ClericPy 2022-03-26 10:39:38 +08:00
同 9 楼
load average 貌似和你任务对系统 CPU 的需求, 不是实际使用情况, 堵的越惨这东西越高. 而容器外面限制资源使用, 该堵的是不是还在那等着 |
14
vhwwls 2022-03-26 11:59:07 +08:00
没看出来有啥问题,Pod 占用是正常的,节点上的 Load average 高是别的原因,vmstat 看看
|
15
rrfeng 2022-03-26 12:04:02 +08:00
你需要去了解一下 cpu usage(utilization) 和 load 的区别。
|
16
ddmasato 2022-03-26 12:17:14 +08:00 via iPhone
是磁盘 io 堵住了吧
|
17
24bit 2022-03-26 12:46:39 +08:00
会不会是 java 没识别到分配的 cpu 数,线程池按照虚拟机总 cpu 数创建了,导致线程太多?
|
20
lhx2008 2022-03-26 19:31:31 +08:00
看 top -H 有多少 Running 的线程,如果很多的话,你调小 limit 反而会把 load 搞高
|