公司搭建了一台linux服务器centos7.6纯净版的系统,所有配置都设置好了,telnet 172.16.100.100 1521 服务是通的,但是启动tomcat服务的时候,就是提示数据库连接池死锁,连接不上去,使用traceroute路由命令跟踪ip也是正常。。。。。各种排查原因都不行。最后发现是Linux主机名称更改了,但是hosts文件还是默认的没有更改。
错误信息:
WARN [C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-AdminTaskTimer] (Slf4jMLog.java:211) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@8cdb375 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
WARN [C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-AdminTaskTimer] (Slf4jMLog.java:211) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@8cdb375 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@cd7120c
on thread: C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-HelperThread-#0
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@86074b9
on thread: C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-HelperThread-#1
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@95360b1
on thread: C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-HelperThread-#2
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@2cc9e7d4
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3e8d4c14
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@354322c0
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1b00116
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@62a4b1b3
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@369dac1f
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1a64dd2e
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1b5dc7c5
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@5cb3c434
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@79576e9
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3ba45698
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@4e32cdc6
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@ce23250
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@206c2f1b
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@39e5bd18
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@61611b1f
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@7c0cc5d1
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3dd939bc
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@29c04e62
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@409011a6
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@5a286628
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@2ec8a008
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@55058ed
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@450d74c0
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@5c0d536f
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@372e6006
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@30bec13e
Pool thread stack traces:
Thread[C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-HelperThread-#1,5,main]
java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
java.net.InetAddress.getLocalHost(InetAddress.java:1500)
oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthenticate.java:1430)
oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:291)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:599)
oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1127)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1114)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1855)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Thread[C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-HelperThread-#2,5,main]
java.net.InetAddress.getLocalHost(InetAddress.java:1486)
oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthenticate.java:1430)
oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:291)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:599)
oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1127)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1114)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1855)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Thread[C3P0PooledConnectionPoolManager[identityToken->2y0hyhac1mhvbt71a4wgbe|5d73dfac]-HelperThread-#0,5,main]
java.net.InetAddress.getLocalHost(InetAddress.java:1486)
oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthenticate.java:1430)
oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:291)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:599)
oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1127)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1114)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1855)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
WARN [main] (GlobalSettings.java:118) - Dozer configuration file not found: dozer.properties. Using defaults for all Dozer global properties.
1、查看linux服务器主机名称
hostnamectl
发现机器的名称是:host-10-157-4-233
2、在linux的目录 /etc下面的hosts文件显示名称如下:
/etc 的hostname文件显示如下:
很明显是机器命令查询到的主机名称和文件记录的名称不能一样,导致服务远程访问其他机器的服务出现问题。
解决办法:
1、修改/etc hosts文件 localhost.localdomain改为:host-10-157-4-233
2、修改/etc 的hostname文件localhost.localdomain改为:host-10-157-4-233
3、修改两个文件后,然后重启机器,重新试一下启动服务,发现已经可以启动,连接远程数据库服务不报错,死锁连接不上了