JStack分析cpu消耗过高问题】的更多相关文章

我们使用jdk自带的jstack来分析.当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1.top查找出哪个进程消耗的cpu高 21125 co_ad2    18   0 1817m 776m 9712 S  3.3  4.9  12:03.24 java                                                                                           5284 co_ad    …
Mark一下, 今天确实用这个方法找到了问题 http://www.iteye.com/topic/1114219 1. top找到目标进程,记下pid 2. top –p pid, 并用shift+h打开线程模式     这样可以看到这个进程中,到底哪个线程占用大量cpu     记下threadid,tid 3. jstack查看该线程实时的stack情况     jstack [pid]|grep -A 10 [tid(16进制)] , 10表示打印stack的长度,可以选择打印更多的st…
一.现象  /pinter/case/cpu?type=1   使用google的gjson.tojson性能较差    type=2 使用性能好的阿里巴巴的fastjson库 压测过程中,发现应用服务器的CPU使用率比较高(>80%): 两种情况: 1.接口的性能非常好,比如响应时间<10ms,tps很高,此时CPU使用率高是正常的,不需要优化 2.接口性能不好,比如响应时间>200ms,tps很低,此时需要考虑优化 二.CPU消耗高可能的原因 1.使用了复杂的算法,比如加密.解密 2…
  目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号: 通过进程号pid,我们在linux上可以通过top –H –p <pid>命令,显示该进程中每个线程的CPU资源消耗情况. 然后通过threadump命令,可以打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程序了. 另: 使用jrcmd命令也可以进行threadump和进程执行线程情况的查看,但该命令为jrockit 5.0 新带的命令,在…
线上kafka与storm的空载情况下负载都比较高, kafka达到122%, storm平均负载达到, 20%,  当前是通过Ambari下管理kafka的, a. 先停止s5的kafka进程.b. 开启s5 上kafka的jmx远程监控, kafka的启动命令为: source /usr/hdp/current/kafka-broker/config/kafka-env.sh ; /usr/hdp/current/kafka-broker/bin/kafka start , kafka 的s…
一.java定位进程 在服务器中终端输入命令:top 可以看到进程ID,为5421的cpu这列100多了. 记下这个数字:5421 二.定位问题进程对应的线程 然后在服务器中终端输入命令:top -Hp 5421 作用是查看里程内部线程资源占用情况.5421为第二步获取到的进程id 可以看到第一行cpu占用特别高,就是它了.记住,此时第一列PID是线程ID:5463 注意这个ID是十进制,但是java线程堆栈是采用是16进制.那么我们转换一下. printf "%x\n" 5463 输…
背景: 运行测试程序后,top命令发现某个进程(pid)占用cpu达到100%.   查看哪个线程占用最多资源: ps mp pid -o THREAD,tid,命令查看这个进程下面的所有线程占用情况. 发现线程324占用最多. 使用jstack进行跟踪: jstack pid 进行查看输出到临时文件 jstack 324> test 将刚刚发现占用cpu最多的线程id(324)换算成16进制,324==>144 查看jstack 生成的文件: 下面可以看出是哪行代码导致,查看那行代码发现有死…
http://blog.csdn.net/longdel/article/details/7296446…
在Linux系统中, CPU 主要用于中断,内核以及用户进程的任务处理,优先级为 中断 > 内核 > 用户进程.在CPU消耗分析中,我们还经常遇到下面几个概念. 上下文切换         每个CPU在同一时间只能执行一个线程, Linux 中线程是抢占式调度的. 也就是说每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或者高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的的执行状态,并恢复要执行的线程的状态,这个过程就称为上下文切换.在java 应用程序中…
我们使用jdk自带的jstack来分析.当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1.top查找出哪个进程消耗的cpu高 21125 co_ad2    18   0 1817m 776m 9712 S  3.3  4.9  12:03.24 java                                                                                           5284 co_ad    …
Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source=tuicool&utm_medium=referral 今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6% 一般解决方法是通过top命令找出消耗资源高…
Linux 系统下 cpu 使用率过高的分析方法 1.通过 top 命令可以很明显查看出哪个进程耗cpu比较高 2. ps -mp 25147-o THREAD,tid,time\top -Hp pid找到耗时最高的线程 或者使用:使用 top -H -p <pid> 查看进程里面的线程占用情况 或者在top命令之后使用:shift+h  查看哪个进程程消耗最高 3,将需要的线程ID转换为16进制格式 , 打印堆栈信息sudo jstack 25147|grep 6268 jstack 388…
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1.通过top命令查看当前系统CPU使用情况,找到可疑进程PID top - 09:37:18 up 70 days, 16:29, 2 users, load average: 1.13, 1.04, 0.97 Tasks: 105 tot…
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6% 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1. 通过top命令找到可疑进程PID top 一下 可以看出java进程CPU利用率一直保持100%,稳居不下,找到PID 24138 2. 找出消耗资源最高的线程 top -H -p  29580 …
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1. 通过top命令找到可疑进程PID top - 09:37:18 up 70 days, 16:29, 2 users, load average: 1.13, 1.04, 0.97 Tasks: 105 total, 1 running…
由于涉及到私有代码,所有图片都隐去 1.执行TOP命令,确认CPU占用较高的进程PID 根据top命令,发现PID为8691的Java进程占用CPU高达3858%,出现故障 2.确认该进程中CPU占用率高的线程 找到该进程后,如何定位具体线程或代码呢?首先显示线程列表,并按照CPU占用高的线程排序.执行如下命令: ps -mp 8691 -o THREAD,tid,time | sort –rn 从该列表中可以看出TIME列,所有线程占用时间都比较高,达到了3个小时以上.可以选择其中一个线程(T…
mapdb是什么 mapdb是一个快速.易用的嵌入式java数据库,主要提供map和set形式的数据存储,使用起来就像是在操作java本身的map,set, mapdb可以提供内存级别和磁盘级别的缓存,MapDB 提供了并发的 TreeMap 和 HashMap ,使用基于磁盘的存储.快速.可伸缩性以及易用,它提供了基于磁盘或者堆外(off- heap允许Java直接操作内存空间, 类似于C的malloc和free)存储的并发的Maps.Sets.Queues.MapDB的前身是JDBM,已经有…
使用Jprofiler监控分析案例 一.cpu负载过高:http://localhost:8080/PerfTeach/CpuTopServlet?id=1 cpu消耗高的可能原因1.使用了复杂的算法,比如加密.解密2.压缩.解压.序列化等操作3.代码bug,比如死循环 dstat监控起来,先看一下资源是否正常,用5个并发跑60秒 CPU:100% TPS才几百,肯定就有问题 TOP:JAVA占的CPU最多 查看进程,是tomcat 使用jprofiler查看,很明显有个自己写的userToSt…
项目过程中发现,应用服务器经常会出现CPU使用率较高的情况,需要定位出具体代码问题. 1.用top命令,根据CPU使用率排序,找出消耗cpu最高的进程 2.找出该进程下消耗CPU最高的线程(命令:top -Hp pid) 3.将该进程转换成16进制 4.用jstack去dump线程栈(命令:jstack 进程|grep 16进制线程) 就是这个对象造成的用户CPU使用过高,具体根据这个对象去找对应的代码就行,或者把这个对象告诉开发,开发知道怎么去找对应的代码.…
示例代码: public class CPULockTest { private static Object lock1 = new Object(); private static Object lock2 = new Object(); public static void main(String[] args) { new Thread(()->{ synchronized (lock1){ try { System.out.println(Thread.currentThread().g…
  Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用  1.top 查到占用cpu高的进程pid 2.查看该pid的线程:top -H -p 9532 3.查看这个线程所有系统调用:strace -p 10017 不停循环输出Connection timed out,让开发查看问题…
linux终端下用 top命令看到cpu占用超过100%.之所以超过100%.说明cpu是多核.默认top显示的是cpu加起来的使用率,运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来.如果是4核cpu占用率最高可达400%. java进程占用CPU过高常见的两种情况及分析定位 https://blog.csdn.net/dingjianmin/article/details/85705812 在linux中的定位方法4.1.找到CPU占用高的进程号 如…
背景         有处理过生产问题的同学基本都能遇到系统忽然缓慢,CPU突然飙升,甚至整个应用请求不可用.当出现这种情况下,在不影响数据准确性的前提下,我们应该尽快导出jstack和内存信息,然后重启系统,尽快回复系统的可用性,避免用户体验过差.本文针对CPU飙升问题,提供该问题的排查思路,从而能够快速定位到某线程甚至某快代码导致CPU飙升,从而提供处理该问题的思路. 排查过程 通过top命令查看cpu飙升的java进程pid 通过ps -mp [pid] -o THREAD,tid,tim…
go中提供了pprof包来做代码的性能监控,在两个地方有包: net/http/pprof runtime/pprof 其实net/http/pprof中只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来. 使用 net/http/pprof 做WEB服务器的性能监控 如果你的go程序是用http包启动的web服务器,想要查看自己的web服务器的状态.这个时候就可以选择net/http/pprof.    import _ "net/http/pprof"…
一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用1. 通过top命令找到可疑进程PID top - 09:37:18 up 70 days, 16:29, 2 users, load average: 1.13, 1.04, 0.97Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombieCpu(s): 1.0%us, 4.9%sy, 0.0%ni, 93.6%id, 0.0%wa…
在压测过程中,有时候cpu会飙升,造成这种现象的原因很多, 可能是gc造成的,也可能是某个方法造成的, 如果从找对应的方法入手,下面简单罗列下步骤: 1.top,获取pid 下面cpu消耗90%左右 2.top -Hp pid,获取cpu切片时间最多的tid 32209cpu切片时间最多 3.printf "%x\n" tid,转换为16进制 4.jstack pid |grep tid -A 20,获取这个tid的线程栈信息 下图表示是打日志消耗cpu多 优化方案:打印日志改为单线程…
其他 MBeans 希望监控 Hibernate 和 Hazelcast(仅针对 Confluence 数据中心)你需要在你的 setenv.sh / setenv.bat 文件中添加下面的内容. set CATALINA_OPTS=-Dconfluence.hazelcast.jmx.enable=true %CATALINA_OPTS% set CATALINA_OPTS=-Dconfluence.hibernate.jmx.enable=true %CATALINA_OPTS% 这个修改将…
之前使用Java Swing开发了一款设备档案收集工具.支持多台设备同时收集,每个设备使用一个线程.在同时收集多台设备信息时,发现CPU占用率居然达到了97%,而且高居不下.显然这样的性能是令人无法忍受的. 我们知道,通过jdk自带的工具jvisualvm可以查看每个线程的执行情况,但就是无法分析每个线程的CPU占用情况.由于工具是运行在Windows系统上的,所以也没办法像Linux下面那样通过命令去分析线程的CPU占用.而微软的process explorer工具可以解决这一难题.通过这个强…
原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚没个正形,现在写的程序卡的跑不动.他说我本地 是好好的,跑的很快.我说别扯那么多没用的,服务器不比你的本子强得多.待洒家上去看看.不看不知道一看吓一跳,CPU占用在95上下.开个程序是不卡,可整点有些时间是卡的一匹.这就令人很难受了. 本来服务器上也没有什么,就一个网站和几个数据库.那一个个分析吧,…
首先,通过top命令找出CPU占用率高的进程: 然后,通过ps -o THREAD,tid,time -mp 2066命令找出执行时间最长的线程的TID 将有问题的TID转为16进制格式: printf "%x\n" TID 最后,通过jstack 2066 | grep --color -E '2ab7|2ab8' -A 30命令打印线程的堆栈信息: 这些信息对于我这个运维来说,简直是天书,所以,我只需将它们发给开发即可.…