现象:发现运行在tomcat的应用,不管上多少个vuser模拟请求压力,只会耗用200%的cpu,测出应用的tps很低,近10次每秒。分析:1、网络的瓶颈排除2、执行jstack-l线程号>线程号.loglog如下:3、看出来了0x0000000751968760
的内存变量一个锁住,另一个在获取锁,出现死锁问题。..
分类:
其他好文 时间:
2015-05-20 09:59:01
阅读次数:
149
快速获取jvm的jstack和jstat日志...
分类:
Web程序 时间:
2015-05-14 12:03:29
阅读次数:
200
hi,all最近抽时间把JVM运行过程中产生的一些线程进行了整理,主要是围绕着我们系统jstack生成的文件为参照依据。 前段时间因为系统代码问题,造成性能瓶颈,于是就dump了一份stack出来进行分析。 stack 里面线程非常多,排查起来需要一定的经验,所以,对它们有一定了解,可以提高排查问题...
分类:
其他好文 时间:
2015-05-12 20:49:36
阅读次数:
129
最近在一次压力测试问题分析中,发现运行在tomcat的应用,不管上多少个vuser模拟请求压力,只会耗用200%的cpu,测出应用的tps很低,近10次每秒。经过分析,不是网卡的瓶颈,于是怀疑是内存锁的问题,于是就以下操作与分析。
步骤一:在linux环境上执行jstack -l 线程号 >线程号.log
步骤二:从.log发现如下问题0x0000000751968760 的内...
分类:
系统相关 时间:
2015-05-12 17:18:32
阅读次数:
209
例如jps,jmap,jstack等。在win7下,有的时候执行这些命令会报“拒绝访问”的错误...
1:通过jps命令查看所有进程pid。
2:使用top -p pid 针对你所要查的pid查看这个进程的CPU和内存以及负载情况
如图:
使用top -p pid -H 查看针对每一个线程占用CPU情况进行查询
如果你发现某一个PID占用的CPU过高,就拿到这个PID转换成16进制
例如pid为12760转化成16进制31D8,大写换成小写
jstack 22...
分类:
编程语言 时间:
2015-04-28 12:00:19
阅读次数:
162
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式: jstack [-l][F] pid 如果java程序崩溃生成core文件,jst...
分类:
编程语言 时间:
2015-04-17 13:04:59
阅读次数:
141
1, 使用top命令查看飙高的java进程 2, 通过jstack命令将java的线程栈输出,保留现场 jstack -l 30142 > 30142.stack 3, 通过 top -H -p PID命令输出占用cpu过高的线程 找到占用cpu过高的PID 4, 使用printf 命...
分类:
其他好文 时间:
2015-04-07 10:11:19
阅读次数:
141
最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁)。 产生这个死循环的根源在于对一个未保护的共享变量 — 一个"HashMap"数据结构的操作。当在所有操作的...
分类:
编程语言 时间:
2015-03-30 01:27:34
阅读次数:
177
转自:http://jameswxx.iteye.com/blog/1041173一:jstackjstack命令的语法格式: jstack 。可以用jps查看java进程id。这里要注意的是:1. 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信...
分类:
编程语言 时间:
2015-03-18 15:47:38
阅读次数:
288