IT其它

JVM hang住

系统的架构是IHS+WAS + DB2操作系统都是linux
WAS是6.1
DB2是9.7.0.4
最近一个多月频繁发生JVM hang住的问题。
然后一定需要手工重启才能恢复。这样严重影响用户访问网站,因为主页有很多是需要去后台数据库读取数据的部分,所以一旦JVM hang住,用户就可能看到一个白屏。联系了IBM,但是反馈寥寥无几。
大家帮忙分析一下具体可能是那部分出了问题:应用/was/jvm/db2/ihs; 客户现在天天投诉,实在没辙了。

我查询过相关日志,DB2没有错误日志,只有WAS的JVM有报错信息:

Caused by:
com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException: Connection not available, Timed out waiting for 180012
        at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1613)
        at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2341)
        at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:932)
        at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:608)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:449)
        ... 71 more
[12-7-28 0:57:52:395 CST] 00000393 SystemOut     O ERROR - [message] [Arvato Framework] error: Cannot open connection                [module] com.arvato.framework.aop.interceptor.TransactionInterceptor
[12-7-28 0:57:52:396 CST] 00000393 RequestProces W org.apache.struts.action.RequestProcessor processException Unhandled Exception thrown: class java.lang.reflect.UndeclaredThrowableException
[12-7-28 0:57:52:399 CST] 00000393 SystemOut     O Appint catch: null
[12-7-28 1:00:16:950 CST] 000003a3 CoordinatorCo W   HMGR0152W: 检测到 CPU 饥饿。当前线程调度延迟是 10 秒。
[12-7-28 1:01:02:827 CST] 00000397 FreePool      E   J2CA0045E: 调用资源 jdbc/commerce159 的方法 createOrWaitForConnection 时连接不可用。
[12-7-28 1:01:02:838 CST] 00000397 JDBCException W org.hibernate.util.JDBCExceptionReporter logExceptions SQL Error: 0, SQLState: null
[12-7-28 1:01:02:839 CST] 00000397 JDBCException E org.hibernate.util.JDBCExceptionReporter logExceptions Connection not available, Timed out waiting for 190432
[12-7-28 1:01:02:840 CST] 00000397 SystemOut     O ERROR - null

[12-7-28 1:28:32:782 CST] 00000339 MCWrapper     E   J2CA0081E: 尝试在资源 No longer available 的 ManagedConnection WSRdbManagedConnectionImpl@616e616e 上执行方法 destroy 时方法 destroy 失败。捕获到异常:com.ibm.ws.exception.WsException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: [jcc][t4][2030][11211][3.62.56] 在对连接的底层 socket、socket input stream 或 socket output stream 执行操作期间
发生通信错误。错误位置:T4Agent.sendRequest() - flush (-1)。消息:连接超时。 ERRORCODE=-4499, SQLSTATE=08001. with SQL State : 08001 SQL Code : -4499
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.setLinkedException(DataStoreAdapterException.java:464)
        at com.ibm.ws.rsadapter.AdapterUtil.mapException(AdapterUtil.java:2232)
        at com.ibm.ws.rsadapter.AdapterUtil.translateSQLException(AdapterUtil.java:1265)
        at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.destroy(WSRdbManagedConnectionImpl.java:3240)
        at com.ibm.ejs.j2c.MCWrapper.destroy(MCWrapper.java:1781)
        at com.ibm.ejs.j2c.FreePool.cleanupAndDestroyMCWrapper(FreePool.java:722)
        at com.ibm.ejs.j2c.PoolManager.reclaimConnections(PoolManager.java:4213)
        at com.ibm.ejs.j2c.PoolManager.executeTask(PoolManager.java:4096)
        at com.ibm.ejs.j2c.TaskTimer.run(TaskTimer.java:89)
Caused by: com.ibm.websphere.ce.cm.StaleConnectionException: [jcc][t4][2030][11211][3.62.56] 在对连接的底层 socket、socket input stream 或 socket output stream 执行操作期间
发生通信错误。错误位置:T4Agent.sendRequest() - flush (-1)。消息:连接超时。 ERRORCODE=-4499, SQLSTATE=08001DSRA0010E: SQL 状态 = 08001,错误代码 = -4,499
        at sun.reflect.GeneratedConstructorAccessor202.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:522)
        at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper(GenericDataStoreHelper.java:523)
        at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:578)
        at com.ibm.ws.rsadapter.AdapterUtil.mapException(AdapterUtil.java:2160)
        ... 7 more
---- Begin backtrace for Nested Throwables
java.sql.SQLException: [jcc][t4][2030][11211][3.62.56] 在对连接的底层 socket、socket input stream 或 socket output stream 执行操作期间
发生通信错误。错误位置:T4Agent.sendRequest() - flush (-1)。消息:连接超时。 ERRORCODE=-4499, SQLSTATE=08001DSRA0010E: SQL 状态 = 08001,错误代码 = -4,499
参与10

9同行回答

发生问题时候,手工生成javacore 和heapdump 文件,贴出来。并且在发生问题的时候做一次数据库快照,看看哪些指标和正常情况差距较大。显示全部
发生问题时候,手工生成javacore 和heapdump 文件,贴出来。并且在发生问题的时候做一次数据库快照,看看哪些指标和正常情况差距较大。收起
证券 · 2014-07-05
浏览1238
zhwshzhwsh其它SK
我也遇到了,,,显示全部
我也遇到了,,,收起
互联网服务 · 2014-07-05
浏览1275
tomshenhaotomshenhao其它UNITEC
at last the final reason is the time out setting in Firewall between Database Server and Application Server. The port should be set as TCP. But the engineer set it as UDP. The time out time is different between these two.显示全部
at last the final reason is the time out setting in Firewall between Database Server and Application Server. The port should be set as TCP. But the engineer set it as UDP. The time out time is different between these two.收起
IT其它 · 2014-03-14
浏览1314
zhwshzhwsh其它SK
CPU饥饿HMGR0152W: 检测到 CPU 饥饿。当前线程调度延迟是 {0} 秒。    Explanation        在机器上有太多的可运行线程。未以及时方式分派线程。这将影响系统稳定性。Action        从机器除去负载,直到此消息消失。...显示全部
CPU饥饿
HMGR0152W: 检测到 CPU 饥饿。当前线程调度延迟是 {0} 秒。
    Explanation        在机器上有太多的可运行线程。未以及时方式分派线程。这将影响系统稳定性。
Action        从机器除去负载,直到此消息消失。

连接超时,多半是和数据库相关的问题,楼主是如何解决的呢。收起
互联网服务 · 2014-03-13
浏览1272
huxiaofei590huxiaofei590软件开发工程师ibm
应该是数据库出现问题了。它拒绝了was的创建连接的请求。显示全部
应该是数据库出现问题了。它拒绝了was的创建连接的请求。收起
互联网服务 · 2012-07-30
浏览1174
田强田强系统工程师
贴db2diag.log看看有啥有用信息没google结果参考下:http://www-01.ibm.com/support/docview.wss?uid=swg21323294http://publib.boulder.ibm.com/in ... trouble_timeout.htm显示全部
IT分销/经销 · 2012-07-30
浏览1197
tomthetomthe软件开发工程师zsbank
推测的,,锁表导致连接不能释放,连接池用尽,没有办法获得连接显示全部
推测的,,锁表导致连接不能释放,连接池用尽,没有办法获得连接收起
互联网服务 · 2012-07-30
浏览1215
weiruan85weiruan85数据库管理员ibm
回复 2# tomthe     从哪看出来是锁表?    只是没有办法获得连接而已。 楼主可以把db2diag.log 相关信息贴出来给大家看看。显示全部
回复 2# tomthe


    从哪看出来是锁表?

   只是没有办法获得连接而已。 楼主可以把db2diag.log 相关信息贴出来给大家看看。收起
政府机关 · 2012-07-30
浏览1230
tomthetomthe软件开发工程师zsbank
应该是锁表,连接不能释放,导致连接池用尽,无法openConnection,可以用下面的sql查出是否有锁等待:db2 update dbm cfg using DFT_MON_LOCK ON DFT_MON_STMT ondb2 update monitor switches using lock on sort on bufferpool on uow on table on statement ondb2 "select agent...显示全部
应该是锁表,连接不能释放,导致连接池用尽,无法openConnection,
可以用下面的sql查出是否有锁等待:
db2 update dbm cfg using DFT_MON_LOCK ON DFT_MON_STMT on
db2 update monitor switches using lock on sort on bufferpool on uow on table on statement on
db2 "select agent_id,substr(stmt_text,1,100) as statement,stmt_elapsed_time_ms from table(snapshot_statement('sample',-1)) as B where agent_id in( select agent_id_holding_lk from table(snapshot_lockwait('sample',-1)) as A order by lock_wait_start_time asc fetch first 20 rows only) order by stmt_elapsed_time_ms desc"

注意该语句查出的是持有锁,并且该锁导致其他sql等待的语句,不是正在等待的语句
试试看吧收起
互联网服务 · 2012-07-28
浏览1274

提问者

tomshenhao
其它UNITEC
擅长领域: 数据库

问题状态

  • 发布时间:2012-07-28
  • 关注会员:1 人
  • 问题浏览:12782
  • 最近回答:2014-07-05
  • X社区推广