zoukankan      html  css  js  c++  java
  • k8s-修改线程数

    1.背景:

    (1)胖容器ssh登录报错:handshake error

    (2)登录宿主机后,观察pod状态为running,但是kubectl exec 和docker exec 均无法进入该容器,报错如下

    2.原因:

    这种情况可能是容器内的业务进程发生线程泄露,通常是java程序引起

    3.处理方式:

    (1)登录实例的宿主机上

    (2)先检查下有没有登录错机器,执行 kubectl get namespaces | grep 那台实例的ns,有记录就是没错。例如:kubectl get namespaces | grep lc-test

    (3)cd /sys/fs/cgroup/pids/kubepods && find -name pids.current |grep pod |xargs -I file sh -c 'echo -e file" c" && cat file'|awk '$2 > 10000'     找出线程数高的容器

    (4)进入对应容器的pid相关目录,记住,是进入搜索得到的目录。搜索到的是两个目录,需要到第二个记录操作,就是pod的目录下。而不是没有cd直接就echo,此操作有风险,须知!!!

      若不确定自己容器的pids.max在哪个目录下,可查找poduid定位

    (5)echo 16000 >pids.max    修改线程数限制,记得分清楚目录,如果搞成修改宿主机的线程数,可能会导致该宿主机上的实例全部挂了,有风险。

    (6)如果可以停止或者重启,可以登录实例手动处理一下。命令:kubectl exec -it -n podns podname /bin/bash  eg:kubectl exec -it -n poseidon-monitor poseidon-monitor /bin/bash

    备注:确认容器哪个进程的线程数较多:ps -ef |grep -v PID |awk '{print $2}' |xargs -I file sh -c 'echo -e file" c" && cat /proc/file/status 2>/dev/null|grep Threads'|sort -unr -t : -k 2

               然后直接kill -9

    (7)echo 15000 >pids.max   待修正后恢复该容器的最大线程限制为15000     

    总结:这种案例的表现通常为,pod状态running, kubectl,docker exec都无法进入容器,或者存在docker ps 卡住现象

  • 相关阅读:
    线性回归和逻辑回归
    行列式,叉积 (2)
    K最邻近算法(K-Nearest Neighbor,KNN)(初探)
    线性感知机和SVM(初探)
    向量点积(Dot Product)
    聚类(初探)
    sqlserver全文检索
    诗词背诵
    初级英语04
    初级英语03
  • 原文地址:https://www.cnblogs.com/Xinenhui/p/14844993.html
Copyright © 2011-2022 走看看