|
我的WebLogic挂起(停止响应)了,我该怎么办?
WebLogic系统挂起说明系统有线程死锁的问题,这时您需要做thread dump来获取您的线程的运行情况,从而断定是什么操作导致了死锁。
在Windows系统要获得thread dump信息,您需要在WebLogic运行的窗口按Ctrl+Break键;而对于Unix系统,则需要执行:
kill -3 <pid> 。其中pid是您运行WebLogic的JVM的进程号.如果不能产生thread
dump,请和JVM提供商联系。对于Solaris系统,您可能需要在LD_LIBRARY_PATH的前边加上/usr/lib/lwp.
Thread dump会显示出系统中所有线程的当前运行情况。状态为runnable的线程为当前可运行的;状态为waiting
on monitor的线程一般为当前在执行wait()操作;状态为waiting for monitor entry的线程为当前在等待锁。您需要特别注意这些状态为waiting
for monitor entry的线程,因为正是他们造成了死锁。如果您看到您自己的代码处于waiting for
monitor entry状态,请检查您的代码;如果您发现是WebLogic系统的线程造成死锁,请和Bea的技术支持联系。
一个最常见的系统死锁问题是由于用户采用了DriverManager.getConnection(),这是因为DriverManager的getConnection方法是同步的.解决的办法就是使用WebLogic提供的数据库连接池,或是改用Driver.connect()方法来获取连接.
|