- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java故障排查ThreadDump
Thread Dump是非常有用的诊断 Java 应用问题的工具,每一个 Java 虚拟机都有
及时生成显示所有线程在某一点状态的 thread-dump 的能力。虽然各个 Java 虚
拟机 thread dump 打印输出格式上略微有一些不同,但是 Thread dumps出来的
信息包含线程;线程的运行状态、标识和调用的堆栈;调用的堆栈包含完整的类
名,所执行的方法,如果可能的话还有源代码的行数。
Thread Dump特点:
? 能在各种操作系统下使用
? 能在各种 Java应用服务器下使用
? 可以在生产环境下使用而不影响系统的性能
? 可以将问题直接定位到应用程序的代码行上
Thread Dump能诊断的问题包括:
? 查找内存泄露,常见的是程序里 load大量的数据到缓存
? 发现死锁线程
Sun的 JVM 用下列方法可以产生 Thread Dump 堆栈信息:
1,Solaris OS
ctrl-’\’ (Control-Backslash)
kill -QUIT pid
2, HP-UX/UNIX/Linux
Kill -3 PID
PID通过下面方法获取
ps -efHl | grep java **. **
3,Windows
直接对 MSDOS 窗口的程序按 Ctrl-break
有些 Java 应用服务器是在控制台上运行,如 Weblogic,为了方便获取
threaddump 信息,在 weblogic 启动的时候,最好将其标准输出重定向到一个文
件,用nohup sh startWebLogic.sh start.log 命令,执行kill -3 pid,Stack
trace 就会输出到 start.log 里。Tomcat 的 Thread Dump 会输出到命令行控制台
或者 logs 的 catalina.out 文件里。为了反映线程状态的动态变化,需要接连多次
做 thread dump,每次间隔 10-20s。
IBM JVM下产生 Thread Dump:
在 AIX 上用 IBM 的 JVM,内存溢出时默认地会产生 javacore 文件(关于 cpu
的)和 heapdump 文件(关于内存的)。如果没有参照下列方法:
1 choose one cluster member, set the following before this server start:
在 was 启动前设置下面环境变量(可以加在启动脚本中)
export IBM_HEAPDUMP=true
export IBM_HEAP_DUMP=true
export IBM_HEAPDUMP_OUTOFMEMORY=true
export IBM_HEAPDUMPDIR=directory path
2 please use set command to make sure you do not have
DISABLE_JAVADUMP parameter
then start this cluster member.
用 set 命令检查参数设置,确保没有设置 DISABLE_JAVADUMP,然后启动
server
3 when you find free memory 50% when no heavy access, please run kill -3
pid
执行 kill -3 pid命令可以生成 javacore 文件和 heapdump 文件(pid为was java
进程的 id 号,可以用 ps -ef|grep java 查到),可以多执行几次,按照下面操作
进行
ps -ef psef1.txt
ps aux psaux1.txt
vmstat 5 10 vmstat.txt
kill -3 app server id
wait for 2 mins
kill -3 app server id
wait for 2 mins
kill -3 app server id
netstat -an netstat2.txt
ps -ef psef2.txt
ps aux psaux2.txt
将上面产生的 txt 文件和/usr/WebSphere/AppServer/javacore*文件和
heapdump 文件拷贝到本地,然后删除这些文件,因为这些文件会占用较大的文
件系统空间。
将/usr/WebSphere/AppServer/logs/wlmserver1(或 2)目录下当天产生的日志拷
贝出来
在 IBM JVM 产生的 javacore
您可能关注的文档
- Hot water freeze quickly good for share.ppt
- How a Secure and Open Mobile Agent Framework Suits Electronic Commerce Applications.pdf
- Honeywell (Modules+Specification).pdf
- How do the grains slide in fine-grained zirconia polycrystals at high temperature.pdf
- How developers copy.pdf
- How e-commerce is transforming and internationalizing service industries.pdf
- How good is the turbid medium-based app.pdf
- How novel are the chemical weapons of garlic mustard in North American forest understories.pdf
- How Does The Bone Shaft Geometry Affect its Bending Properties.pdf
- How to find the main idea of a paragraph.doc
文档评论(0)