记一次容器CPU高占用问题排查】的更多相关文章

起因:发现docker中有两个容器的CPU持续在百分之95以上运行了一晚上 执行命令:docker stats 发现这个两个大兄弟一点没歇满负荷跑了一晚上,再这么下去怕不是要GG 容器里跑的是JAVA应用,JDK版本1.8 首先进入容器内部:docker exec -it 容器ID /bin/bash 然后下载阿里巴巴提供的开源JAVA检查工具 Arthas 发现容器内没有wget 和 yum 所以先执行 apt-get update 然后执行 apt insatll wget wget装好以后…
一次线上CPU高的问题排查实践 前言 近期某一天上班一开电脑,就收到了运维警报,有两台服务CPU负载很高,同时收到一线同事反馈 系统访问速度非常慢,几乎无响应. 一个美好的早晨,最怕什么就来什么.只好推掉其他会议,专心搞定问题. 排查 登录系统一看,后端的接口访问果然全部超时. 先使用top命令查看下是由哪个进程占用CPU较高. 从图上可看出,pid=26481的Java进程占用了385%的CPU,机器是4核8G的配置. 2.然后查看下是哪个Java应用 ps -ef | grep java 发…
故事起因 本故事根据真实故事书写,如有雷同绝非巧合.在开发过程中难免反复修改程序,面对突然起来的问题难免束手无策,有些人选择自我处理问题,也有人选择交流区域咨询,或许恰巧有人有类似的问题,刚好可以解决你的问题,但是如果你的问题恰好有些独特,最后还是需要自己谷歌百度,大海捞针似的搜寻. 一套几年前的程序,现在急需大范围使用起来,优化了一些细节,由于业务的转型,全线使用php快速解决方案,于是乎就没有测试其他问题匆忙上线了. 初入江湖下山历练 去年上线,上线肯定难以避免很多细节问题,优化优化,最大的…
笔记: 1.top命令找出最高占用的进程(command为java) 2.查看高负载进程下的高负载线程:top -Hp [PID] (或 ps -mp PID -o THREAD,tid,time) 3.找出最高占用的线程并记录thread_id,把线程号 进行换算成16进制编号:printf "%X\n" thread_id 4.(可选)执行查看高负载的线程名称:jstack 16143[进程] | grep 3fb6[线程] 5.导出进程的堆栈日志,找到3fb6 这个线程号:jst…
第一步: 看这些CPU是不是SQL Server用的. 第二步: 确定SQL Server 有没有引发17883\17884错误 第三步: 找出使用CPU最高的语句进行优化.(sys.dm_exec_query_stats    sys.exec_sql_text  ) sys.dm_exec_query_stats.total_work_time 代表着占用CPU 的时间. sys.dm_exec_query_stats.plan_generate_num代表着重编译的次数.---编译也是要C…
1.关于MovieClip和Sprite的鼠标事件,当不需要鼠标事件的时候将mouseEnabled和mouseChildren设为false. 不断的检测鼠标交互事件会消耗CPU,尤其是大量交互对象重叠的情况. 2.对于执行时间太长的非动画内容,优先选择计时器,而不是 Event.ENTER_FRAME 事件. 3.在 enterFrame 事件或 Timer 处理函数中,尽量减少对可导致重绘屏幕的显示对象外观的更改. 4.尽量减少补间动画,以节省更多的CPU处理.把MC给stop 5.场景里…
先查询进程 top 再根据进程号,查出进程的线程 ps p 3036 -L -o pcpu,pid,tid,time,tname,cmd 得到最高使用率CPU的线程TID,转换成16进制 printf "%x\n" 3251 记住这个字符码 cb3,16进制就是0xcb3 再查,使用jstack工具查询  jstack -l [pid] -- over --…
步骤如下: 1.使用top命令定位异常进程.可以看见12836的CPU和内存占用率都非常高 2.使用top -H -p 进程号查看异常线程 3.使用printf "%x\n" 线程号将异常线程号转化为16进制 4.使用jstack 进程号|grep 16进制异常线程号 -A90来定位异常代码的位置(最后的-A90是日志行数,也可以输出为文本文件或使用其他数字).可以看到异常代码的位置.…
1 ps -mp pid -o THREAD,tid,time 2 printf "%x\n" tid 3 jstack pid |grep tid -A 30…
关于csrss.exe和winlogon.exe进程多.占用CPU高的解决办法 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个winlogon.exe进程和占用CPU高,百度查了下,说是有人在破解远程,最后按教程修改3389端口和改密码,重启后CPU直接降下来了,winlogon.exe进程也只有一个,一切恢复正常. 我太懒了,之前知道winlogon.exe进程多,但没这几天严重,今天查资料才发现有人在破解我服务器,都几…
对于绝大多数实时程序来说,实时处理相关程序中的循环问题所带来的对机器的损耗和自身的处理速度的平衡,以及与其他程序的交互以及对其他功能的影响难免会成为程序设计中最大的障碍同时也是最大的突破点. 在所有这类问题面前,我们统一的解决方案几乎都是多线程操作,一点点将机器的性能发挥到我们可以控制的最大,并将我们处理速度提升到我们可以控制的最高高度. 然而,对于很多人来说,多线程所带来的不稳定性无疑就是噩梦. 譬如: 起初我们在写单线程程序时,我们塑造了一条流水线,流水线上有几个环节,我们安排了一个工人,按…
进程占用CPU高 每次从SVN上更新资源时,电脑都会卡死,直到资源更新完.当要Commit资源时,SVN也会卡死资源管理器,如下图所示: 解决占用CPU高的问题 1.禁用图标缓存 2.排除路径和包含路径(可选),排除路径就是不需要用到SVN的地方,包含路径就是SVN所在本地磁盘的路径. 3.设置完之后,在进程里结束掉 TortoiseSVN status cache的进程,就不会那么卡了 4.注意:关闭这个进程之后,SVN的资源有改动,图标的状态也不会发生改变,自己Commint时刷新一个就OK…
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况.2,程序代码有问题,出现死循环,可能性极大. 问题解决:1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出.2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下…
原地址 http://blog.sina.com.cn/s/blog_912e77480101nuif.html   最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个winlogon.exe进程和占用CPU高,百度查了下,说是有人在破解远程,最后按教程修改3389端口和改密码,重启后CPU直接降下来了,winlogon.exe进程也只有一个,一切恢复正常. 我太懒了,之前知道winlogon.exe进程多,但没这几天严重,今…
linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对象的情况,如果有大量对象在持续被引用,没有被释放掉,就产生了内存泄露,要结合代码,把不用的对象释放掉 jmap -histo 线程PID # 查看堆的使用情况,各个堆空间的占用情况 jmap -heap # 查询进程id垃圾回收情况 jstat -gcutil 线程PID…
最近一段时间  某台服务器上的一个应用总是隔一段时间就自己挂掉      用top看了看  从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top 2.通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,time | sort -rn 3.将需要的线程ID转换为16进制格式 printf "%x\n" tid 4.打印线程的堆栈信息  到了这一…
1.查看主进程占用cpu高: 此处主进程:27823 ~]# top top - :0: up days, :, 3 users, load average: 13.12, 13.31, 13.23 Tasks: total, running, sleeping, stopped, zombie %Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : total, free, used,…
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况.2,程序代码有问题,出现死循环,可能性极大. 问题解决:1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出.2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下…
互联网后端架构 https://mp.weixin.qq.com/s/LiqAy2DikbmZzqogb5XRdA JVM的CPU资源占用过高问题的排查 互联网后端架构  今天 上午线上某应用的一台JVM的CPU占比突然飙高到192%,并且一直下不来,导致监控一直告警,好久没处理这种问题了,现在将问题排查步骤总结记录一下.(以下的图都不是线上问题的截图,涉及到公司业务) 1.通过top命令查看当前机器的CPU使用情况 此时发现如果是Java的进程占用过高,并且一直下不来,则排查是什么线程导致占比…
# . 查看主进程占用cpu高 top # java # . 按照线程占用cpu由高到低进行排查: -o THREAD,tid, # USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME # root :: # root - futex_ - - :: # root - futex_ - - :: # root - futex_ - - :: # root - skb_re - - :: # . 将线程号转化为16进制: printf 6e7 # . 通过主…
下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例子,如下: package com.classloading; public class Test { static class MyThread extends Thread { public void run() { // 死循环,消耗CPU int i = 0; while (true) {…
背景 将log4j.xml的日志级别从error调整为info后,进行压测发现CPU占用很高达到了90%多(之前也就是50%,60%的样子). 问题排查 排查思路:  看进程中的线程到底执行的是什么,导致CPU占用较高. 1. 使用top命令查看到底是哪个应用占用的cpu比较高 左边的图是日志级别为info CPU较高的服务器, 右边为输出级别为error cpu正常的服务器. 2. 使用top -Hp pid 命令查看进程中的线程 可以看到左边运行中的线程比右边要多(实际上左边运行状态的线程常…
由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,CPU占用率暴涨.于是开始查找原因,发现是线程run()方法里的while(true)导致的, 下图是为解决时开启一条while(true)线程的CPU占用率,很明显,就开了一条,电脑模拟器CPU就占用了43%,开两条直接90%导致电脑卡死所以这个问题很严重. 这是解决后的CPU占用率,从图中可知,开启了25条线程也就占用了不到34%,所以效果很明显! 这是解决方法: 只需在while(true)循环内加上一句Thread.s…
Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平:大的来说,可能会导致主机和集…
背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平:大的来说,可能会导致主机和集群资源耗尽,服务完全不可用. docker 作为容器的管理者,自然提供了控制容器资源的功能.正如使用内核的 namespace 来做容器之间的隔离,docker 也是通过内核的 cgrou…
背景 在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU.内存和磁盘资源.如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平:大的来说,可能会导致主机和集群资源耗尽,服务完全不可用. docker 作为容器的管理者,自然提供了控制容器资源的功能.正如使用内核的 namespace 来做容器之间的隔离,docker 也是通过内核的 cgrou…
现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是搜遍百度各种方法尝试个遍,可能错过诊断问题的最佳时机又可能尝试一堆方法最后无奈放弃. 怎么样让琐事缠身的程序维护人员,用最快的方式解决数据库出现的问题?怎么让我们程序员的痛苦降低到最小...每天喝喝茶水,看看新闻平安度过一天呢?本系列重要通过Expert for sqlserver工具讲解下数据库遇…
CPU占用高,最常见的原因是死循环或者类死循环的操作,如果要逐一排查代码,费时费力,可以先用工具 工具1.windbg,windows出品的牛刀一枚以管理员运行windbg,File->Attach to Process!runaway //会显示每个线程的CPU占用时间(user mode),里面Time值最大的就是CPU占用最高的线程~*kb //显示线程的callstack,然后找CPU时间最大的那个Id的callstack,如果有pdb,就可以看到函数行了 工具2. Process Ex…
双11大战开始了,这几天公司系统压测,CPU各种报警,于是找了篇关于CPU高问题排查的文章. 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen) 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux | grep PID命令…
首先查看nginx的error日志,无异常打印. cpu占用如下图所示: top - 10:05:40 up 233 days, 16:28, 4 users, load average: 25.53, 25.39, 21.62Tasks: 836 total, 20 running, 816 sleeping, 0 stopped, 0 zombieCpu(s): 51.8%us, 4.1%sy, 0.0%ni, 31.0%id, 6.1%wa, 0.0%hi, 6.9%si, 0.0%stM…