V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
dunhanson

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

  •  
  •   dunhanson · Mar 26, 2022 · 3451 views
    This topic created in 1494 days ago, the information mentioned may be changed or developed.

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

    request limit 都设置为 2

    load average

    Supplement 1  ·  Mar 26, 2022

    kubectl top命令cpu利用率正常,但是load average还是很高

    Supplement 2  ·  Mar 26, 2022
    k8s-node8
    20 replies    2022-03-26 19:31:31 +08:00
    hwdef
        1
    hwdef  
       Mar 26, 2022
    kubectl top 看一下,容器里的 top 看资源使用量不一定准确
    dunhanson
        2
    dunhanson  
    OP
       Mar 26, 2022
    @hwdef 我在节点上面看的,没有在容器里面
    dunhanson
        3
    dunhanson  
    OP
       Mar 26, 2022
    @hwdef kubectl top node 确实占用不高,为啥节点上面用 top 比较高?
    hwdef
        4
    hwdef  
       Mar 26, 2022
    不是你这个 pod 的问题吧,你这 pod 确实也没有超设定值,load average 高的原因有很多,磁盘什么的也会影响,不只是 cpu 和内存,看你这是阿里云的虚拟机,虚拟机底层的主机如果负载高也会造成虚拟机的平均负载高,

    总之就是原因很多,不一定是 cpu 的问题
    dunhanson
        5
    dunhanson  
    OP
       Mar 26, 2022
    @hwdef 但是确实这个 pod 每次启动后负载都会很高,过几分钟后降下来了
    dunhanson
        6
    dunhanson  
    OP
       Mar 26, 2022
    @hwdef 因为这个项目很老,代码比较冗余,我现在代码在精简,有点效果,之前 top 启动的时候负载超过 200 300 ,现在<60 。但还是很高,cpu 总共也就 4 线程
    hwdef
        7
    hwdef  
       Mar 26, 2022
    emmmm 容器优化 jvm 我也不熟,,我是写 go 的,,,感觉 java 上云还是容易水土不服,,
    dunhanson
        8
    dunhanson  
    OP
       Mar 26, 2022
    @hwdef 哈哈 难搞
    disk
        9
    disk  
       Mar 26, 2022 via iPhone
    你这个 java 程序是多线程的吗? k8s 只能限制容器的 cpu 使用时间,如果你有多个线程在等 cpu ,负载一样会很高。
    dunhanson
        10
    dunhanson  
    OP
       Mar 26, 2022
    @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
        11
    dunhanson  
    OP
       Mar 26, 2022
    CMD ["sh","/usr/local/tomcat/bin/tomcat.sh"]
    ClericPy
        12
    ClericPy  
       Mar 26, 2022
    同 9 楼

    load average 貌似和你任务对系统 CPU 的需求, 不是实际使用情况, 堵的越惨这东西越高. 而容器外面限制资源使用, 该堵的是不是还在那等着
    dunhanson
        13
    dunhanson  
    OP
       Mar 26, 2022
    @ClericPy 看来没有什么有效的办法了,难搞
    vhwwls
        14
    vhwwls  
       Mar 26, 2022
    没看出来有啥问题,Pod 占用是正常的,节点上的 Load average 高是别的原因,vmstat 看看
    rrfeng
        15
    rrfeng  
       Mar 26, 2022
    你需要去了解一下 cpu usage(utilization) 和 load 的区别。
    ddmasato
        16
    ddmasato  
       Mar 26, 2022 via iPhone
    是磁盘 io 堵住了吧
    24bit
        17
    24bit  
       Mar 26, 2022
    会不会是 java 没识别到分配的 cpu 数,线程池按照虚拟机总 cpu 数创建了,导致线程太多?
    dunhanson
        18
    dunhanson  
    OP
       Mar 26, 2022
    @ddmasato 正常的
    dunhanson
        19
    dunhanson  
    OP
       Mar 26, 2022
    @vhwwls 用 vmstat 看 us 比较高,可以到 80 多,但 top 的 wa 又比较低
    lhx2008
        20
    lhx2008  
       Mar 26, 2022
    看 top -H 有多少 Running 的线程,如果很多的话,你调小 limit 反而会把 load 搞高
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   952 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 20:53 · PVG 04:53 · LAX 13:53 · JFK 16:53
    ♥ Do have faith in what you're doing.