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 卡住现象
k8s-修改线程数的更多相关文章
- CentOS 修改线程数限制等(limits.conf)
修改/etc/security/limits.conf,例如启动程序的用户为webadmin,则添加以下配置: webadmin - nofile 65536 webadmin - nproc 655 ...
- oracle线程数更改
查看Oracle最大进程数: SQL> select count(*) from v$session #连接数,查看更多oracle数据库的疑问, 可点击cuug官网.http://www.cu ...
- Linux ulimit和动态修改MySQL最大线程数限制
ulimit是限制进程对资源的使用但软件资源限制变化不大,特别是process/file,分别对应nproc和nofilenproc可用 ulimit -u 查询:nofile可用 ulimit -n ...
- spring boot tomcat 线程数 修改初始线程数 统计性能 每百次请求耗时
[root@f java]# tail -30 nohup.outsearchES-TimeMillisSpent:448P->1602@fT->http-nio-8080-exec-3t ...
- 修改linux系统用户最大线程数限制
linux系统对线程数量有个最大限制,当达到系统限制的最大线程数时使用账号密码ssh到系统时是无法登陆的,会报Write failed: Broken pipe,或者是shell request fa ...
- (转)linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制
ulimit命令查看和更改系统限制 ulimit命令详解 ulimit用于shell启动进程所占用的资源,可以用来设置系统的限制 语法格式 ulimit [-acdfHlmnpsStvw] [size ...
- linux修改用户最大线程数
linux下普通用户最大允许使用线程数为1024: 但是并发量大时,该1024配置项远远不够满足我们的需要,我们可以修改/etc/security/limits.d/90-nproc.conf配置设置 ...
- .NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长
一个 asp.net core 站点,之前运行在Linux 服务器上,运行一段时间后有时站点会挂掉,在日志中记录很多“EMFILE too many open files”的错误: Microsoft ...
- LINUX最大线程数及最大进程数
查看最大线程数: cat /proc/sys/kernel/threads-max ulimit User limits - limit the use of system-wide resource ...
- Jvm支持的最大线程数
摘自 http://blog.csdn.net/xyls12345/article/details/26482387 JVM最大线程数 (2012-07-04 23:20:15) 转载▼ 标签: jv ...
随机推荐
- 每天5分钟复习OpenStack(十)Ceph 架构
在很多关于Ceph的文章中,通常会介绍一堆概念.虽然这些概念很重要,但是对于一个新手来说,同时接受太多的概念实际上很难消化.因此,在阅读本章节时要保持轻松的心情,只需要对所有的概念有个了解就可以了,因 ...
- .NET领域性能最好的对象映射框架Mapster使用方法
Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射.在本文中,我将详细介绍如何在.NET中使用Mapster,并提供一些实例和源代码. 和其它框架性能对比: ...
- Jenkins从Ubuntu迁移至AlmaLinux问题及相关解决记录
相关背景 之前在Ubuntu平台上搭建了Jenkins(在Ubuntu机器上使用war包安装Jenkins),现在由于一些需求,需要将系统迁移到AlmaLinux平台.由于AlmaLinux属于Cen ...
- windows下tomcat开机自启动
在Windows下,可以通过以下步骤将Tomcat设置为开机自启动: 1. 打开Tomcat安装目录:通常情况下,Tomcat的安装目录位于`C:\Program Files\Apache Softw ...
- nginx的keepalive和keepalive_requests(性能测试TPS波动)
当使用nginx作为反向代理时,为了支持长连接,需要做到两点: 从client到nginx的连接是长连接 从nginx到server的连接是长连接 保持和client的长连接: http { keep ...
- python中get请求
先来说说get请求和post请求的区别: 1 最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的: 2 GET请求的URL传参有长度限制,而POST请求没有长度限制 ...
- 在CPF里使用OpenGL做跨平台桌面应用开发
CPF 是开源的C#跨平台UI框架,支持使用OpenGL来渲染,可以用来硬件加速播放视频或者显示3D模型 实现原理其实就是Skia用OpenGL后端,Skia里绑定GLView的OpenGL纹理,将纹 ...
- UI自动化测试框架:数据驱动
一.UI自动化框架介绍 测试框架使用了Po设计模式(Page Object),每一个页面用一个类来对应,这个类里面要实现所有核心页面元素的获取方法,类里面提供操作页面元素的所有方法. 这个框架实现几点 ...
- 【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
大家好,我是独孤风. 数据可视化是数据领域一个非常重要的应用.而结合了数据可视化和数据探索功能的BI(商业智能)工具,更是被各大公司青睐.但是,由于数据可视化工具的开发成本过高,长期以来一直是商业化的 ...
- NC65单据模板公式使用
单据模板公式使用 (一) 公式使用场景 用户使用产品时,往往对单据上的字段取值有各种不同的需求.为此单据模板提供 了模板公式功能,可以让实施顾问或者用户通过配置各种公式,并且不用修改代码,从 而满足用 ...