tomcat thread dump 分析
- 前言
Java Thread Dump 是一个非常有用的应用诊断工具, 通过thread dump出来的信息, 可以定位到你需要了解的线程, 以及这个线程的调用栈. 如果配合linux的top命令, 可以找到你的系统中的最耗CPU的线程代码段, 这样才能有针对性地进行优化.
- 场景和实践
2.1. 后台系统一直是在黑盒运行, 除了能暂停一部分任务的执行, 根本无法知道哪些任务耗CPU过多。所以一直以为是业务代码的问题, 经过各种优化(删减没必要的逻辑, 合并写操作)等等优化, 系统负载还是很高. 没什么访问量, 后台任务处理也就是每天几百万的级别, load还是达到了15以上. CPU只有4核,天天收到load告警却无从下手, 于是乎就被迫来分析一把线程.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 2012-04-1316:30:41Full thread dump OpenJDK 64-Bit Server VM (1.6.0-b09 mixed mode):"TP-Processor12"daemon prio=10tid=0x00000000045acc00nid=0x7f19in Object.wait() [0x00000000483d0000..0x00000000483d0a90]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00002aaab5bfce70> (a org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)at java.lang.Object.wait(Object.java:502)at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:662)- locked <0x00002aaab5bfce70> (a org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)at java.lang.Thread.run(Thread.java:636)"TP-Processor11"daemon prio=10tid=0x00000000048e3c00nid=0x7f18in Object.wait() [0x00000000482cf000..0x00000000482cfd10]java.lang.Thread.State: WAITING (on object monitor)...."VM Thread"prio=10tid=0x00000000042ff400nid=0x77derunnable"GC task thread#0 (ParallelGC)"prio=10tid=0x000000000429c400nid=0x77d9runnable"GC task thread#1 (ParallelGC)"prio=10tid=0x000000000429d800nid=0x77darunnable"GC task thread#2 (ParallelGC)"prio=10tid=0x000000000429ec00nid=0x77dbrunnable"GC task thread#3 (ParallelGC)"prio=10tid=0x00000000042a0000nid=0x77dcrunnable"VM Periodic Task Thread"prio=10tid=0x0000000004348400nid=0x77e5waiting on conditionJNI global references: 815HeapPSYoungGen      total 320192K, used 178216K [0x00002aaadce00000, 0x00002aaaf1800000, 0x00002aaaf1800000)eden space 303744K, 55% used [0x00002aaadce00000,0x00002aaae718e048,0x00002aaaef6a0000)from space 16448K, 65% used [0x00002aaaf0690000,0x00002aaaf110c1b0,0x00002aaaf16a0000)to   space 16320K, 0% used [0x00002aaaef6a0000,0x00002aaaef6a0000,0x00002aaaf0690000)PSOldGen        total 460992K, used 425946K [0x00002aaab3a00000, 0x00002aaacfc30000, 0x00002aaadce00000)object space 460992K, 92% used [0x00002aaab3a00000,0x00002aaacd9f6a30,0x00002aaacfc30000)PSPermGen       total 56192K, used 55353K [0x00002aaaae600000, 0x00002aaab1ce0000, 0x00002aaab3a00000)object space 56192K, 98% used [0x00002aaaae600000,0x00002aaab1c0e520,0x00002aaab1ce0000) | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Tasks: 118total,   2running, 116sleeping,   0stopped,   0zombieCpu(s): 92.6%us,  2.3%sy,  0.0%ni,  3.8%id,  0.7%wa,  0.1%hi,  0.7%si,  0.0%stMem:   4054168k total,  3892212k used,   161956k free,   115816k buffersSwap:  4192956k total,   294448k used,  3898508k free,  2156024k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND8091admin     1601522m 814m 9660R 22.320.64:05.61java8038admin     1601522m 814m 9660R 10.320.62:46.31java8043admin     1501522m 814m 9660S  3.720.61:52.04java8039admin     1501522m 814m 9660S  0.720.62:10.98java8041admin     1501522m 814m 9660S  0.720.61:39.66java8009admin     1501522m 814m 9660S  0.320.60:27.05java8040admin     1501522m 814m 9660S  0.320.60:51.46java7978admin     2501522m 814m 9660S  0.020.60:00.00java7980admin     1901522m 814m 9660S  0.020.60:05.05java7981admin     1601522m 814m 9660S  0.020.60:06.31java7982admin     1501522m 814m 9660S  0.020.60:06.50java7983admin     1501522m 814m 9660S  0.020.60:06.66java7984admin     1501522m 814m 9660S  0.020.60:06.87java7985admin     1501522m 814m 9660S  0.020.60:33.82java | 
| 1 2 3 4 5 | "链路检测"prio=10tid=0x00002aaafa498000nid=0x1F9Brunnable [0x0000000045fac000..0x0000000045facd10]</div>java.lang.Thread.State: RUNNABLEat cn.emay.sdk.communication.socket.AsynSocket$CheckConnection.run(AsynSocket.java:112)at java.lang.Thread.run(Thread.java:636) | 

tomcat thread dump 分析的更多相关文章
- tomcat thread dump 分析【转载】
		前言 Java Thread Dump 是一个非常有用的应用诊断工具, 通过thread dump出来的信息, 可以定位到你需要了解的线程, 以及这个线程的调用栈. 如果配合linux的top命令, ... 
- Java_tomcat thread dump 分析
		前言 Java Thread Dump 是一个非常有用的应用诊断工具, 通过thread dump出来的信息, 可以定位到你需要了解的线程, 以及这个线程的调用栈. 如果配合linux的top命令, ... 
- 通过 thread dump 分析找到高CPU耗用与内存溢出的Java代码
		http://heylinux.com/archives/1085.html通过 thread dump 分析找到高CPU耗用与内存溢出的Java代码 首先,要感谢我的好朋友 钊花 的经验分享. 相信 ... 
- 性能分析之-- JAVA Thread Dump 分析综述
		性能分析之-- JAVA Thread Dump 分析综述 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工 ... 
- 性能分析之– JAVA Thread Dump 分析
		最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相关知识整理在一起,输出文章如下. 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Du ... 
- (转)性能分析之-- JAVA Thread Dump 分析综述
		原文链接:http://blog.csdn.net/rachel_luo/article/details/8920596 最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相 ... 
- java之Thread Dump分析
		什么是Thread Dump Thread Dump是非常有用的诊断Java应用问题的工具.每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机 ... 
- java jvm heap dump及 thread dump分析
		一.概念: 在进行java应用故障分析时,经常需要分析内存和cpu信息,也就说所谓的heap dump 和 thread dump heap dump: heap dump文件是一个二进制文件,需要工 ... 
- 三个实例演示 Java Thread Dump 日志分析
		原文地址: http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html jstack Dump 日志文件中的线程 ... 
随机推荐
- 从零开始搭建linux下laravel 5.5所需环境(一)
			首先你需要有一台linux服务器,或者虚拟机,这里就不赘述了,不会的可以自行百度. 我这里准备的是一台腾讯云服务器,系统为CentOS 7.4 64位. 你可以使用腾讯云的登录按钮登录到服务器,也可以 ... 
- POJ 1470 Closest Common Ancestors (LCA, dfs+ST在线算法)
			Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 13370 Accept ... 
- 能够区分光驱的类型么?比如CDROM、DVD还是CD-RW
			http://www.jubao163.com/it/bianchengwendang/2007-06-17/14948.shtml typedef struct _SCSI_PASS_THROUGH ... 
- ZOJ3673:1729
			1729 is the natural number following 1728 and preceding 1730. It is also known as the Hardy-Ramanuja ... 
- java classpath作用
			环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Progr ... 
- window消息机制二
			消息机制 windows是一个消息驱动的系统,会有一个总的系统消息的队列,鼠标.键盘等等都会流入到这个队列中,同时会为每个线程维护一个消息队列(注意默认是有GUI调用的线程才有,对于没有GUI或者窗口 ... 
- C标准库 二
			http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html现在C语言(C99)标准库函数的24个头文件列表如下: assert.h ... 
- [翻译] LASIImageView - 显示进度指示并异步下载图片
			LASIImageView – download image with progress indicator 翻译原网址:http://lukagabric.com/lasiimageview-d ... 
- css3 3d展示中rotate()介绍与简单实现
			最近在了解css3的3d动画效果,学习发现,css3中的3d效果实现还是很好玩的,现在我给你大家简单的介绍一下css3中3d效果的实现. 我也只是一个初学者,如果在博客中写的不对的地方欢迎指正. 好了 ... 
- 利用c#+jquery+echarts生成统计报表(附源代码)
			背景: 因为最近项目要生成报表,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.百度echarts简介请参考 http://echarts.baidu.com/ 虽然echarts功能强 ... 
