记一次K8S项目把工作节点线程占满,导致服务崩盘事故处理

一开始发现线上服务不能正常使用

我是先排查K8S pod是否有异常

kubectl get pod -o wide

表面看着无异常

然后查看各项目运行日志,发现有些项目在报错:Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: unable to create new native thread

无法创建新的进程

然后发现这个项目所在的工作节点已经不能登录了,因为线程被消耗完了

处理办法 先驱逐这台节点上的pod,使服务能正常提供,重启该服务器,重启完后 查看该节点是否恢复到集群中,然后:kubectl uncordon (node) 把该节点变成可调度

现在开始排查是哪个服务在疯狂消耗进程

我这边编写了一个小脚本来输出各项目使用的进程

pid.sh

#!/bin/bash
ID=`ps aux |grep app.jar|grep -v grep |awk '{print $2}'`
echo $ID
for i in $ID
do
cat /proc/$i/status |grep Threads
done

 

处理有问题的服务代码

posted @   有鹏自远方来  阅读(285)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示