服务器:OAS 10g
数据库Oracle DB 10.2.0.1.0应用程序发布在OAS中运行正常,几个小时后,发生死锁,抓到的thread dump显示无法获取连接池:
"AJPRequestHandler-HTTPThreadGroup-253" prio=10 tid=0x0101ae70 nid=0x1a9 waiting for monitor entry [0x50f7d000..0x50f7fa70]
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:178)
- waiting to lock <0x7f8ceae8> (a oracle.jdbc.pool.OracleDataSource)
at oracle.oc4j.sql.DataSourceConnectionPoolDataSource.getPooledConnection(DataSourceConnectionPoolDataSource.java:87)
at oracle.oc4j.sql.xa.EmulatedXADataSource.getXAConnection(EmulatedXADataSource.java:80)
at oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl.createXAConnection(ManagedConnectionFactoryImpl.java:206)
at oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl.createManagedConnection(ManagedConnectionFactoryImpl.java:167)
at com.evermind.server.connector.ApplicationConnectionManager.createManagedConnection(ApplicationConnectionManager.java:1360)
at oracle.j2ee.connector.ConnectionPoolImpl.createManagedConnectionFromFactory(ConnectionPoolImpl.java:327)
at oracle.j2ee.connector.ConnectionPoolImpl.access$800(ConnectionPoolImpl.java:98)
at oracle.j2ee.connector.ConnectionPoolImpl$NonePoolingScheme.getManagedConnection(ConnectionPoolImpl.java:1211)
at oracle.j2ee.connector.ConnectionPoolImpl.getManagedConnection(ConnectionPoolImpl.java:785)
at com.evermind.server.connector.ApplicationConnectionManager.getConnectionFromPool(ApplicationConnectionManager.java:1558)
at com.evermind.server.connector.ApplicationConnectionManager.acquireConnectionContext(ApplicationConnectionManager.java:1503)
at com.evermind.server.connector.ApplicationConnectionManager.allocateConnection(ApplicationConnectionManager.java:1449)
at oracle.j2ee.connector.OracleConnectionManager.unprivileged_allocateConnection(OracleConnectionManager.java:238)
at oracle.j2ee.connector.OracleConnectionManager.allocateConnection(OracleConnectionManager.java:192)
at oracle.oc4j.sql.ManagedDataSource.getConnection(ManagedDataSource.java:197)
at oracle.oc4j.sql.ManagedDataSource.getConnection(ManagedDataSource.java:142)
对象<0x7f8ceae8>已经被锁,而当前的线程也试图lock。
更多的log也显示很多线程都在等待wait to lock 这个<0x7f8ceae8>
查看Oracle db上的所有log,均没有提示错误,用SQLPLUS和Toad直接链接该数据库并SQL操作都没有问题。请问大家,有什么建议来分析这个问题