AIX6L系统下的weblogic9.2死机现象
大家好,我在AIX6L系统下的weblogic9.2单机版,运行一段时间后就挂起了,应用无法访问;请问有和我的环境一样的朋友吗?是如何解决wenlogic9.2挂起问题的?谢谢 need jdk 1.5 肯定是jdk1.5,否则weblogic启动不起来 关于死机的可能性就多了,
第一种是操作系统内存用完,pagespace用完了,这可以用vmstat , topas来查看。
如果操作系统正常,有可能是java发生了OOM,这时候web服务器也无法访问,但可以查看weblogic 的domain的日志。
还有就是应用有死循环,把所有的服务线程可占满了,也可以通过日志查看出来。
还有可能是aix或者weblogic,jdk的BUG,不过这个可能性最小。
你日志都不发一个,实在是不知道要怎么定位错误。 日志如下:
<2010-9-3 下午10时06分27秒 GMT+08:00> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "620" seconds working on the request "weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl@6dfa6dfa", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.net.SocketOutputStream.socketWrite0(Native Method)
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:105)
java.net.SocketOutputStream.write(SocketOutputStream.java:149)
oracle.net.ns.DataPacket.send(Unknown Source)
oracle.net.ns.NetOutputStream.flush(Unknown Source)
oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:478)
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1060)
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)
weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:718)
weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:460)
weblogic.common.resourcepool.ResourcePoolImpl.checkResource(ResourcePoolImpl.java:1484)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1393)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1381)
weblogic.common.resourcepool.ResourcePoolImpl.testUnusedResources(ResourcePoolImpl.java:1807)
weblogic.common.resourcepool.ResourcePoolImpl.access$700(ResourcePoolImpl.java:37)
weblogic.common.resourcepool.ResourcePoolImpl$ResourcePoolMaintanenceTask.timerExpired(ResourcePoolImpl.java:1975)
weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265)
weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
>
<2010-9-3 下午10时07分27秒 GMT+08:00> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "680" seconds working on the request "weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl@6dfa6dfa", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.net.SocketOutputStream.socketWrite0(Native Method)
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:105)
java.net.SocketOutputStream.write(SocketOutputStream.java:149)
oracle.net.ns.DataPacket.send(Unknown Source)
oracle.net.ns.NetOutputStream.flush(Unknown Source)
oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:478)
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1060)
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)
weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:718)
weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:460)
weblogic.common.resourcepool.ResourcePoolImpl.checkResource(ResourcePoolImpl.java:1484)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1393)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1381)
weblogic.common.resourcepool.ResourcePoolImpl.testUnusedResources(ResourcePoolImpl.java:1807)
weblogic.common.resourcepool.ResourcePoolImpl.access$700(ResourcePoolImpl.java:37)
weblogic.common.resourcepool.ResourcePoolImpl$ResourcePoolMaintanenceTask.timerExpired(ResourcePoolImpl.java:1975)
weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265)
weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
> 数据库连接检测时间太长,有可能是网络问题或者数据库的问题,需要排查。还有日志里有getNextPagage , 一般数据库的检测只需要一个包就行了,是不是你的检测语句写成了从一个大表里取数据比如select *from [bigtable] 最好改成select 1 from dual 。 可是同样的程序在AIX 5.3上运行,就没有死机的问题 再贴一些jdk的信息:
JAVA Memory arguments: -Xms1024m -Xmx1024m
.
WLS Start Mode=Production
.
CLASSPATH=:/yjapp1/bea/patch_weblogic922/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/usr/java5/lib/tools.jar:/yjapp1/bea/weblogic92/server/lib/weblogic_sp.jar:/yjapp1/bea/weblogic92/server/lib/weblogic.jar:/yjapp1/bea/weblogic92/server/lib/webservices.jar::/yjapp1/bea/weblogic92/common/eval/pointbase/lib/pbclient51.jar:/yjapp1/bea/weblogic92/server/lib/xqrl.jar::
.
PATH=/yjapp1/bea/weblogic92/server/bin:/usr/java5/jre/bin:/usr/java5/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin
.
***************************************************
* To start WebLogic Server, use a username and *
* password assigned to an admin-level user. For *
* server administration, use the WebLogic Server *
* console at http://hostname:port/console *
***************************************************
starting weblogic with Java version:
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap32dev-20100813 (SR12 FP1 ))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc-32 j9vmap3223-20100808 (JIT enabled)
J9VM - 20100629_60535_bHdSMr
JIT - 20100623_16197_r8
GC - 20100211_AA)
JCL - 20100813
Starting WLS with line:
/usr/java5/bin/java -Xms1024m -Xmx1024m -da -Dplatform.home=/yjapp1/bea/weblogic92 -Dwls.home=/yjapp1/bea/weblogic92/server -Dwli.home=/yjapp1/bea/weblogic92/integration -Dweblogic.management.discover=true -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/yjapp1/bea/patch_weblogic922/profiles/default/sysext_manifest_classpath -Dweblogic.Name=yjzhServer -Djava.security.policy=/yjapp1/bea/weblogic92/server/lib/weblogic.policy weblogic.Server
<2010-8-31 上午11时07分51秒 GMT+08:00> <Notice> <WebLogicServer> <BEA-000395> <Following extensions directory contents added to the end of the classpath:
/yjapp1/bea/weblogic92/platform/lib/Bug8173442_920.jar:/yjapp1/bea/weblogic92/platform/lib/p13n/p13n-schemas.jar:/yjapp1/bea/weblogic92/platform/lib/p13n/p13n_common.jar:/yjapp1/bea/weblogic92/platform/lib/p13n/p13n_system.jar:/yjapp1/bea/weblogic92/platform/lib/wlp/netuix_common.jar:/yjapp1/bea/weblogic92/platform/lib/wlp/netuix_schemas.jar:/yjapp1/bea/weblogic92/platform/lib/wlp/netuix_system.jar:/yjapp1/bea/weblogic92/platform/lib/wlp/wsrp-common.jar>
<2010-8-31 上午11时07分51秒 GMT+08:00> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with IBM J9 VM Version 2.3 from IBM Corporation>
<2010-8-31 上午11时07分52秒 GMT+08:00> <Info> <Management> <BEA-141107> <Version: WebLogic Server 9.2 MP2 Mon Jun 25 01:32:01 EDT 2007 952826 >
<2010-8-31 上午11时07分56秒 GMT+08:00> <Info> <WebLogicServer> <BEA-000215> <Loaded License : /yjapp1/bea/license.bea>
<2010-8-31 上午11时07分56秒 GMT+08:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING>
<2010-8-31 上午11时07分56秒 GMT+08:00> <Info> <WorkManager> <BEA-002900> <Initializing self-tuning thread pool>
<2010-8-31 上午11时07分56秒 GMT+08:00> <Notice> <Log Management> <BEA-170019> <The server log file /yjapp1/bea/user_projects/domains/yjzh/servers/yjzhServer/logs/yjzhServer.log is opened. All server side log events will be written to this file.>
<2010-8-31 上午11时07分58秒 GMT+08:00> <Notice> <Security> <BEA-090082> <Security initializing using security realm myrealm.>
<2010-8-31 上午11时08分02秒 GMT+08:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STANDBY>
<2010-8-31 上午11时08分02秒 GMT+08:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING> Ghost,你好。你分析的挺对的,请问“数据库连接检测时间太长,有可能是网络问题或者数据库的问题,需要排查。还有日志里有getNextPagage , 一般数据库的检测只需要一个包就行了,是不是你的检测语句写成了从一个大表里取数据比如select *from [bigtable] 最好改成select 1 from dual 。”该怎么理解呢 [quote]Ghost,你好。你分析的挺对的,请问“数据库连接检测时间太长,有可能是网络问题或者数据库的问题,需要排查 ...
[size=2][color=#999999]冬香 发表于 2010-9-16 15:37[/color] [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=1079188&ptid=119184][img]http://www.loveunix.net/images/common/back.gif[/img][/url][/size][/quote]
就是看你的检测数据库的语句是咋写的,为啥废那么长时间
select一个bigtable是他举了一个可能的例子 检测花费了600s以上,这不太可能吧,把检测语句执行一下,然后看看从web到database的网络连接是否正常。 楼上说的检测数据库的语句,是指weblogic检测数据库的语句还是指我们的应用系统检测数据库的语句写的有问题,谢谢。 eblogic.common.resourcepool.ResourcePoolImpl.checkResource(ResourcePoolImpl.java:1484)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1393)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1381)
weblogic.common.resourcepool.ResourcePoolImpl.testUnusedResources(ResourcePoolImpl.java:1807)
weblogic.common.resourcepool.ResourcePoolImpl.access$700(ResourcePoolImpl.java:37)
weblogic.common.resourcepool.ResourcePoolImpl$ResourcePoolMaintanenceTask.timerExpired(ResourcePoolImpl.java:1975)
通过这一段,就可以很明显得看到是weblogic检测数据库的语句执行太慢,但太慢有多方面的原因。这个就要细查了 如果查了原因都没问题,那就有可能是jdbc驱动,我碰到过一个sybase的jdbc驱动有问题,最后升了驱动程序就可以了,但oracle还没碰到过。 JDBC的驱动已经升级到10.2.0.4了,是oracle的最高版本了,AIX系统也打了补丁,该做的升级都做了。 把检测的SQL在数据库跑一下吧。测试一下网络有没有问题。 非常感谢。。。。
页:
[1]