Üretim sistemimizde dibe ulaşamayacağımız görünen kilitlenmeler var. Çevrimiçi kullanıcıların sayısıyla herhangi bir korelasyon elde edemedik ve mevcut bağlantılar tükeniyor gibi görünmüyor.c3p0, Oracle ve Hazırda Bekletme ile sürekli kilitlenmeler
Oracle'a Hibernate ve c3p0 aracılığıyla bağlanan bir Java EE uygulamasına sahibiz. Bizim c3p0 yapılandırması:
[com.mchange.v2.async.ThreadPoolAsynchronousRunner] (Timer-1) com[email protected]4c9f1b4d -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 5
Active Threads: 5
Active Tasks:
[email protected]86 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
[email protected]01 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
[email protected]c4 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#4)
[email protected]8e (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
[email protected]f8 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#3)
Pending Tasks:
[email protected]e5
[email protected]5d
[email protected]a1
[email protected]eb
[email protected]35
fiili havuz parçacığı yığın izleri farklıdır ve aşağıda bazı örnekler ekledik::
belirgin kilitlenme günlük çıkış daima az ya da çok şuna benzerminPoolSize=10
maxPoolSize=300
initialPoolSize=30
acquireIncrement=10
maxIdleTime=1800
maxStatementsPerConnection=0
numHelperThreads=5
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#4,5,jboss]
java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:45)
java.lang.StringBuilder.<init>(StringBuilder.java:80)
oracle.net.ns.Packet.<init>(Packet.java:513)
oracle.net.ns.ConnectPacket.<init>(ConnectPacket.java:64)
oracle.net.ns.NSProtocol.connect(NSProtocol.java:278)
oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,jboss]
oracle.jdbc.driver.T4CTTIoauthenticate.processRPA(T4CTTIoauthenticate.java:491)
oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:295)
oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:390)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:356)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:1
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,jboss]
oracle.net.ns.NSProtocol.connect(NSProtocol.java:346)
oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Araştırmamızın nerede yapılması gerektiğine dair herhangi bir öneriniz var mı? Bu c3p0, sorgularımız, kodumuz, veritabanı mı?
ORA-00060 hata kodu olmadığından veritabanını büyük olasılıkla ortadan kaldırabilirsiniz. Çifte kontrol etmek isterseniz, veritabanı istisnalarının bir yerde kaybolması durumunda, kilitlenme hataları da uyarı günlüğüne kaydedilir. DBA'nızın, tercihen belirli bir zamanda, kilitlenme uyarıları için uyarı kayıtlarını kontrol etmesini isteyin. –
@jonearles Teşekkürler, DBA'nın kontrol etmesini isteriz. Sorgularımızla veya belki de yapılandırmamızla ilgili sorunlara eğiliyoruz, ancak sınırlı bilgi verildikten sonra nasıl devam edeceğimizden emin değiliz. – Zecrates