预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

ThreadDump是非常有用的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力。虽然各个Java虚拟机threaddump打印输出格式上略微有一些不同,但是Threaddumps出来的信息包含线程;线程的运行状态、标识和调用的堆栈;调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。 ThreadDump特点: 能在各种操作系统下使用 能在各种Java应用服务器下使用 可以在生产环境下使用而不影响系统的性能 可以将问题直接定位到应用程序的代码行上 ThreadDump能诊断的问题包括: 查找内存泄露,常见的是程序里load大量的数据到缓存 发现死锁线程 Sun的JVM用下列方法可以产生ThreadDump堆栈信息: 1,SolarisOS<ctrl>-’\’(Control-Backslash)kill-QUIT<pid> 2,HP-UX/UNIX/LinuxKill-3PIDPID通过下面方法获取ps-efHl|grep'java'**.**3,Windows直接对MSDOS窗口的程序按Ctrl-break 有些Java应用服务器是在控制台上运行,如Weblogic,为了方便获取threaddump信息,在weblogic启动的时候,最好将其标准输出重定向到一个文件,用"nohupshstartWebLogic.sh>start.log&"命令,执行"kill-3<pid>",Stacktrace就会输出到start.log里。Tomcat的ThreadDump会输出到命令行控制台或者logs的catalina.out文件里。为了反映线程状态的动态变化,需要接连多次做threaddump,每次间隔10-20s。 IBMJVM下产生ThreadDump: 在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。如果没有参照下列方法:1chooseoneclustermember,setthefollowingbeforethisserverstart:在was启动前设置下面环境变量(可以加在启动脚本中)exportIBM_HEAPDUMP=trueexportIBM_HEAP_DUMP=trueexportIBM_HEAPDUMP_OUTOFMEMORY=trueexportIBM_HEAPDUMPDIR=<directorypath> 2pleaseusesetcommandtomakesureyoudonothaveDISABLE_JAVADUMPparameterthenstartthisclustermember.用set命令检查参数设置,确保没有设置DISABLE_JAVADUMP,然后启动server 3whenyoufindfreememory<50%whennoheavyaccess,pleaserunkill-3<pid>执行kill-3<pid>命令可以生成javacore文件和heapdump文件(pid为wasjava进程的id号,可以用ps-ef|grepjava查到),可以多执行几次,按照下面操作进行 ps-ef>psef1.txtpsaux>psaux1.txtvmstat510>vmstat.txtkill-3<appserverid>waitfor2minskill-3<appserverid>waitfor2minskill-3<appserverid>netstat-an>netstat2.txtps-ef>psef2.txtpsaux>psaux2.txt将上面产生的txt文件和/usr/WebSphere/AppServer/javacore*文件和heapdump文件拷贝到本地,然后删除这些文件,因为这些文件会占用较大的文件系统空间。将/usr/WebSphere/AppServer/logs/wlmserver1(或2)目录下当天产生的日志拷贝出来 在IBMJVM产生的javacore或者Threaddump文件中应用服务器Web容器的常见线程状态: Idle线程:一个已经准备好接受请求的线程,但是没有和插件或者客户端建立连接Keep-Alive线程:是一个已经准备好接受请求的线程,并且已经和插件或者客户端建立连接正在接受请求的线程:是一个线程正在读取request的内容或者头部下面就给出各种线程在javacore或者Threaddump中的表现形式:Idle线程:"Servlet.Engine.Transports:20"(TID:0x427F190,sys_thread_t:0x15D175E8,state:R,nativeI