[英]A checked-out resource is overdue, and will be destroyed: com.mchange.v2.c3p0.impl.NewPooledConnection@437c5a2d issue tomcat 7 c3p0
we use tomcat 7 and c3p0 as a connection pool.But since starting tomcat every 3 seconds i see many warnings: 17-Jan-2023 20:35:49.259 INFO [C3P0PooledConnectionPoolManager[identityToken->z8kfltat1hfo3gq19fe7ui|2e3d1388]-AdminTaskTimer] com.mchange .v2.resourcepool.BasicResourcePool。 簽出資源過期,將被銷毀:com.mchange.v2.c3p0.impl.NewPooledConnection@7abb733e
這是連接池配置:17-Jan-2023 20:39:4.647 INFO [http-nio-8080-exec-2] com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource。 正在初始化 c3p0 池... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 20,acquireRetryAttempts -> 30,acquireRetryDelay -> 1000,autoCommitOnClose -> false,automaticTestTable -> null,breakAfterAcquireFailure -> false,checkoutTimeout -> 0 , connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> z8kfltat1hftvt811qptc9|2e3d1388, debugUnreturnedConnectionStackTraces -> false, description -> OLTP Connection, driverClass -> oracle.jdbc.driver .OracleDriver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> z8kfltat1hftvt811qptc9|2e3d1388, idleConnectionTestPeriod -> 300, initialPoolSize -> 3, jdbcUrl -> jdbc:oracle:thin:@192.168.0. xx:xxxx:xxxx,maxAdministrativeTaskTime -> 0,maxConnectionAge -> 0,maxIdleTime -> 3 0,maxIdleTimeExcessConnections -> 30,maxPoolSize -> 500,maxStatements -> 0,maxStatementsPerConnection -> 0,minPoolSize -> 50,numHelperThreads -> 3,preferredTestQuery -> SELECT 1 FROM dual,privilegeSpawnedThreads -> false,屬性 -> {user = , password= }, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> true, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 12, userOverrides -> {}, usesTraditionalReflectiveProxies -> false]
PS對不起我的英語:)
我已經閱讀了這里發布的每一個問題,嘗試了一些,但沒有任何線索。我們最終為每個連接調用 connection.close() 。
您已將unreturnedConnectionTimeout
設置為 12 秒。 您看到的消息是由於Connection
沒有及時返回到池中,從而觸發了這些Connection
的銷毀。
盡管您聲明在finally
塊中調用Connection.close()
,但您對Connection
的使用花費的時間比您預期的要長(您的數據庫操作花費的時間超過 12 秒),或者您正在泄漏Connection
。
c3p0
有一個工具可以調試明顯泄露的Connection
。 將debugUnreturnedConnectionStackTraces
設置為true
(僅用於調試,它具有性能成本),您將看到檢查出 c3p0 超時並銷毀的Connection
的堆棧跟蹤。
如果您的數據庫操作有時需要超過 12 秒,只需將unreturnedConnectionTimeout
設置為更大的值。 如果你發現有泄漏,你會看到在哪里修復它。
在此處查看文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.