现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题....
分类:
Web程序 时间:
2015-09-09 09:42:28
阅读次数:
285
背景:运行测试程序后,top命令发现某个进程(pid)占用cpu达到100%。查看哪个线程占用最多资源:ps mp pid -o THREAD,tid,命令查看这个进程下面的所有线程占用情况。发现线程324占用最多。使用jstack进行跟踪:jstack pid 进行查看输出到临时文件jstack ...
分类:
Web程序 时间:
2015-09-02 15:54:12
阅读次数:
243
掌握java自带的这些监控工具,有助与我们很好的分析问题和jvm性能调优秀。收集了些网上整理很好的文章。 Java监控工具、调优、调试辅助函数 Java自带的GUI性能监控工具Jconsole以及JisualVM简介 JDK自带监控工具
分类:
编程语言 时间:
2015-08-20 14:51:56
阅读次数:
122
不知道为什么,窗外出现了乌云,又不知道为什么,烦人的蝉鸣突然变得无声了,大脑中的嘈杂瞬间归位了宁静,草他么,我的测试服务器又特么无缘无故的崩了。 作为菜鸟为了排查故障,最先想到的就是找日志,先后分析了项目启动日志,resin启动日志,jvm日志完全看不出来结果。 1.jvm日志显示gc正...
分类:
Web程序 时间:
2015-08-19 22:37:57
阅读次数:
198
top top -H -p 28857 jstack 28857 > a.txt jstack -F pid 如果是web应用,可以继续打印线程的堆栈信息+++++++++ strace -p 24167 通过这3步基本可以找出什么原因导致java进程占用那么高CPU资源。 将需要的线程I...
分类:
系统相关 时间:
2015-08-18 16:51:37
阅读次数:
190
是什么 jps 查看所有的jvm进程,包括进程ID,进程启动的路径等等。 我自己也用PS,即:ps -ef | grep java jstack 观察jvm中当前所有线程的运行情况和线程当前状态。 系统崩溃了?如果java程序崩溃生成core文件,...
分类:
Web程序 时间:
2015-08-13 12:34:51
阅读次数:
227
我开发的worker,每隔几个月线上都会阻塞一次,一直都没查出问题。今天终于了了这个心结。把解决过程总结下和大家分享。
首先用jstack命令打出这个进程的全部线程堆栈。拿到线程dump文件之后,搜索自己的worker名字。
"DefaultQuartzScheduler_Worker-10" prio=10 tid=0x00007f55cd54d800 nid=0x3e2e wait...
分类:
编程语言 时间:
2015-08-10 20:08:46
阅读次数:
166
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式: ? ? ?jstack [-l][F] pid ? ? ?如...
分类:
编程语言 时间:
2015-08-03 19:30:02
阅读次数:
158
命令:jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令这些命令 必须 在 linux jdk bin 路径 下执行 eq:./jstack 10303 即可 如果想把 内容打印到 文本里 即 ./jstack 10303 >111.log 打印 到 111.log文件 中,...
分类:
编程语言 时间:
2015-07-29 12:00:28
阅读次数:
264
上面的代码启动两个线程,线程T1会占用少量CPU,线程T2会占满一个CPU。
那么如果找出代码中占用CPU较多的问题呢?
首先我们通过top列出进程,按照cpu使用率排序(shift + p)
可以看出出问题的进程号是30358
然后使用 top -H -p 30358 得到如下结果
这里可以看到线程为30371占用太多CPU,此线程有问题
接下来使用jstack ...
分类:
编程语言 时间:
2015-07-26 20:58:11
阅读次数:
212