来源:https://www.cnblogs.com/maxzhang1985/p/12673160.html

一、发现问题

在一次系统上线后,我们发现某几个节点在长时间运行后会出现CPU持续飙升的问题,导致的结果就是Kubernetes集群的这个节点会把所在的Pod进行驱逐(调度);如果调度到同样问题的节点上,也会出现Pod一直起不来的问题。我们尝试了杀死Pod后手动调度的办法(label),当然也可以排除调度节点。但是在一段时间后还会复现,我们通过监控系统也排查了这段时间的流量情况,但应该和CPU持续占用没有关联,这时我们意识到这可能是程序的问题。

二、排查问题

定位Pod

这里使用kubectl top pods 命令确定CPU占用最高的pods都是哪些。

kubectl -n app top pods

因为问题已解决,以上图片只是举个例子。

排查工具

Arthas

我们这边使用了阿里的Arthas ,它是Alibaba开源的Java诊断工具。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

是否有一个全局视角来查看系统的运行状况?

有什么办法可以监控到JVM的实时运行状态?

怎么快速定位应用的热点,生成火焰图?

排查问题

定位到有问题的Pod后,使用kubectl exec进入Pod容器内部:

kubectl -n app exec -it 49a89b2f-73c6-40ac-b6de-c6d0e47ace64-5d489d9c48qwc7t  -- /bin/bash

在容器中下载Arthas

wget https://arthas.gitee.io/arthas-boot.jar

由于我们打包镜像中只有一个服务,所以一个Pod中也只有一个进程; 这里 1 是指PID。

java -jar arthas-boot.jar 1

执行进程看板 dashboard:

[arthas@1]$ dashboard

这里上半区显示了线程内容,我们可以看到哪个线程ID的对应情况:

比如从上面得到了线程ID,使用如下命令进入线程,如ID 12262:

[arthas@1]$ thread -n 12262

打印出线程日志:

[arthas@1]$ thread -n 12262"com.alibaba.nacos.client.Worker.addr-bj-internal.edas.aliyun.com-7362814c-538b-4c26-aa07-1fd47765a145" Id=20190 cpuUsage=7% TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@d30d0a4e (in native)    at sun.misc.Unsafe.park(Native Method)    -  waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@d30d0a4e    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)    at java.lang.Thread.run(Thread.java:813)

三、解决问题

经过了排查定位到了问题,最后经过社区和阿里云伙伴的协助,发现了这个是Nacos 2.0.0.RELEASE的一个BUG。我们对Nacos客户端版本进行了升级,经过测试后,问题解决了。也加深了对Kubernetes集群调试的能力 [加油]。

com.alibaba.cloud      spring-cloud-starter-alibaba-nacos-discovery      2.0.1.RELEASE

四、最后

通过社区和阿里云的帮助,问题成功解决。在工具方面,阿里提供的Arthas,真的是线上环境调试神器!

json.tojsonstring 导致cpu飙高_阿里调试神器立功了!进程导致Kubernetes节点CPU飙高的排查与解决...相关推荐

  1. windows进程管理器_系统变慢?WMI进程导致的CPU高占用解决

    我们有时会遇到系统变慢的情况,查看资源任务管理窗口发现是WMI导致的CPU高占用所致.那么,WMI究竟为何物,能否解除由它导致的CPU高占用,如何解除? 1. 查明WMI的来龙去脉 WMI是Windo ...

  2. 怎么看服务器cpu温度命令_简单几步使用zabbix监控Linux物理服务器CPU温度

    前段时间有个属于笔者维护的小机房空调故障,温度过高导致系统卡慢,多日无人发现.于是想着使用zabbix监控CPU温度并设置告警阀值,同时也能监控到风扇异常.挡风板太脏空气不畅.进程死锁导致CPU使用率 ...

  3. java会导致蓝屏么_原来有这么多原因会导致电脑蓝屏啊

    最近有个网友问小编电脑动不动就蓝屏是什么原因,说起蓝屏小编也很是头疼,小编的第一个电脑也是动不动就蓝屏,小编为此也甚是费心.蓝屏,英文名称BSOD.从专业的角度讲,这一术语被定义为"是指当M ...

  4. 导致集群重启_园区网核心交换机S7706异常重启导致无线网络故障

    问题现象 园区网核心交换机S7706设备异常重启,重启完成后其中一个无线信号故障,其它无线信号正常. 问题分析 1.问题现象分析 检查交换机上的重启时间点记录如下: 从该记录来看,重启原因是由于交换机 ...

  5. phpfpm内存越来越高_内存时序越小越好,为什么DDR1到DDR4 时序值越来越高了?

    内存参数中除了容量.频率外,一般还有一组由四个用破折号分割的数字串,这就是内存的时序. 1.如何查看内存时序 购买内存时,一般参数中都会标注内存的时序信息. 使用中的内存可以用 CPUZ 进行查看. ...

  6. wifi卡慢延迟高_家里WIFI越用越卡?教你3个小方法,彻底解决网速慢、卡顿等问题...

    相信各位小伙伴都遇到过家里Wi-Fi网络频繁卡顿的现象,当遇到这种情况是大多数人的第一反应就是"有其他人在蹭家里的Wi-Fi",为此便会将自家的Wi-Fi密码改成长串数字+复杂字母 ...

  7. css3span等高_支持具有CSS或IMG的iPhone或iPad 3等高dpi像素密集型“视网膜”显示器

    css3span等高 I'm loving responsive design and am slowly updating all my websites to support mobile bro ...

  8. windows linux cpu 抢占式 时间片_阿里技术专家谈:CPU飙高,系统性能问题如何排查?...

    导读:压测时或多或少都收到过CPU或者Load高的告警,如果是单机偶发性的,经常会认为是"宿主机抢占导致的",那事实是否真是如此呢?是什么引起了这些指标的飙高?网络.磁盘还是高并发 ...

  9. jvm 崩溃日志设置_记一次JVM疯狂GC导致CPU飙高的问题解决

    背景 线上web服务器不时的出现非常卡的情况,登录服务器top命令发现服务器CPU非常的高,重启tomcat之后CPU恢复正常,半天或者一天之后又会出现同样的问题.解决问题首先要找到问题的爆发点,对于 ...

最新文章

  1. 牛客题霸 NC11 将升序数组转化为平衡二叉搜索树
  2. php文件夹重命名,php文件下载并重命名
  3. 前端面试知识点(所谓的面试题)(备份前端网)
  4. 用doss进入mysql_一键连接给你省了多少事_DOSS 听吧_音频评测-中关村在线
  5. 信贷系统学习总结(2)——现金贷之借贷模式与前端产品
  6. go Mutex (互斥锁)和RWMutex(读写锁)
  7. idea,Androidstudio快捷键大全,抽取成员变量快捷键
  8. ssms 缺少索引信息_SQLServer索引重建
  9. 烟道机器人_力荐顺义区清洗烟道价格多少钱值得信赖
  10. java read dxf xdata_DXF格式文件数据提取
  11. javascript飞机大战-----007爆炸效果
  12. jpgraph 折线图--解决中文乱码的问题(标题和图例)
  13. 昭阳 E43A 的笔记本电脑 开启或者关闭笔记本自带无线网卡
  14. 计算机系统文件命名规则,电脑新建文件夹等的默认命名如何修改?[多图]
  15. 羡慕华为人年薪110万?先看看华为员工的16项标准!
  16. (转载)有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别...
  17. 生意一直不愠不火的火锅店,用一招“一元套餐”竟转亏为盈?
  18. 估计的商是什么意思_《商》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  19. KFC门店定点查询(输入城市名称即可查询)
  20. CISP学习——信息安全概念

热门文章

  1. NSStringUIImage~NSData的相互转换以及中文转码
  2. Python中的bytes,str,int等类型转换
  3. 从1维到6维,一文读懂多维数据可视化策略
  4. CanFestival应用
  5. linux下iconv编码转换的用法
  6. 一个命令,让你的网站支持https
  7. 推荐几个来自北大、南开的大神的公众号!
  8. 指引趋势和方向!2019开发者技能报告出炉!!
  9. HTTP对外接口,如何增加签名机制
  10. 开发指南专题三:JEECG微云快速开发平台项目编码规范