簡體   English   中英

C3P0連接池停頓與Heroku Postgres

[英]C3P0 connection pool stall with Heroku Postgres

這與以前未解決的帖子有關: C3P0似乎在Heroku上初始化連接池后立即進入死鎖狀態。 我的本地postgres不會發生此問題。

這是hibernate.hbm.xml的連接配置

 <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>



    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>


    <property name="hibernate.connection.url">jdbc:postgresql://myurl:5432/mydb?user=myusername&amp;password=myoassword&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory&amp;ssl=true</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.username">myusername</property>
    <property name="hibernate.connection.password">mypassword</property>
    <property name="hibernate.archive.autodetection">class</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <property name="hbm2ddl.auto">create</property>

    <!-- c3p0 connection pool settings -->
    <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property>
    <property name="hibernate.c3p0.min_size">1</property>
    <property name="hibernate.c3p0.max_size">2</property>
    <property name="hibernate.c3p0.timeout">1800</property>

這是日志。 請注意,在“運行DeadlockDetector”的10秒周期中,掛起大約一分鍾。 還要注意以下調用異常:

[DEBUG]“ com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager” 2015-07-05 07:12:57,851:為auth,用戶名創建了新池(已屏蔽):'sp ******'。

[DEBUG]“ com.mchange.v2.resourcepool.BasicResourcePool” 2015-07-05 07:12:57,851:獲取測試-池大小:0; target_pool_size:1; 期望的目標? 1個

...為簡化起見刪除了幾行

[DEBUG]“ com.mchange.v2.resourcepool.BasicResourcePool” 2015-07-05 07:12:59,132:獲取系列成功終止。 減少的pending_acquires 1 ,嘗試剩余的次數:30

[DEBUG]“ com.mchange.v2.resourcepool.BasicResourcePool” 2015-07-05 07:12:59,132:跟蹤com.mchange.v2.resourcepool.BasicResourcePool@6293abcc [管理:2,未使用:1,排除:0] (例如com.mchange.v2.c3p0.impl.NewPooledConnection@576ddf03)

[DEBUG]“ com.mchange.v2.resourcepool.BasicResourcePool” 2015-07-05 07:12:59,132:遞減的未決收入:0

[DEBUG]“ com.mchange.v2.resourcepool.BasicResourcePool” 2015-07-05 07:12:59,132:獲取系列成功終止。 遞減的[acquires]減少[0],剩余的嘗試次數:30

[DEBUG]“ com.mchange.v2.resourcepool.BasicResourcePool” 2015-07-05 07:12:59,132:跟蹤com.mchange.v2.resourcepool.BasicResourcePool@6293abcc [管理:2,未使用:1,排除:0] (例如com.mchange.v2.c3p0.impl.NewPooledConnection@576ddf03)

[DEBUG]“ com.mchange.v2.async.ThreadPoolAsynchronousRunner” 2015-07-05 07:13:07,841:com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@45912fb9-正在運行DeadlockDetector [正在退出。 沒有待處理的任務。]

...每十秒鍾重復一次

[DEBUG]“ com.mchange.v2.async.ThreadPoolAsynchronousRunner” 2015-07-05 07:13:47,859:com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@45912fb9-正在運行DeadlockDetector [正在退出。 沒有待處理的任務。]

[INFO]“ org.hibernate.dialect.Dialect” 2015-07-05 07:13:55,467:HHH000400:使用方言:org.hibernate.dialect.PostgreSQLDialect

[INFO]“ org.hibernate.engine.jdbc.internal.LobCreatorBuilder” 2015-07-05 07:13:55,472:HHH000424:由於createClob()方法引發錯誤,因此禁用了上下文LOB創建:java.lang.reflect.InvocationTargetException

[DEBUG]“ com.mchange.v2.async.ThreadPoolAsynchronousRunner” 2015-07-05 07:13:55,576:com.mchange.v2.async.ThreadPoolAsynchronousRunner@6a01e23:將任務添加到隊列中-com.mchange.v2.resourcepool .BasicResourcePool $ 1RefurbishCheckinResourceTask @ 55b699ef

答案實際上已經發布,並且在這里進行了很好的解釋:

我將以下內容添加到我的hibernate.hbm.xml中

 <property name="temp.use_jdbc_metadata_defaults">false</property> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM