2014-03-19 69 views
0

既然我們已經添加C3P0連接池的應用程序的性能越來越慢。它是Oracle 10g數據庫,Hibernate 3.1.3和C3P0 0.9.0.4。 WebSphere應用服務器。我對這件事很陌生,所以我不明白一切。此配置是否會降低應用性能?如果是,我應該改變什麼?休眠C3P0設置性能問題

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>  
<property name="hibernate.c3p0.min_size">1</property> 
<property name="hibernate.c3p0.max_size">50</property> 
<property name="hibernate.c3p0.timeout">5000</property> 
<property name="hibernate.c3p0.max_statements">50</property> 
<property name="hibernate.c3p0.idle_test_period">600</property> 
<property name="hibernate.c3p0.preferredTestQuery">select 1 from dual;</property> 
+0

你看到的日誌?游泳池需要更多時間來返回任何連接 – Kick

回答

2
  1. c3p0-0.9.0.x是非常,非常古老。請更新至0.9.2.1或最新的0.9.5預發佈。新版本是直接替換,你只需要更新你的依賴,或者如果您手動包括jar文件,包括最近的C3P0罐子還有mchange公地-java的jar文件,你會發現包含在binary distribution

  2. 你的性能問題最有可能從設定max_statements到50這道太小,可能有多達50個活動的連接池造成的。這意味着平均每個連接在池處於容量時緩存單個語句,並強制頻繁地翻轉語句緩存。我建議你先將max_statements設置爲0,然後看看結果如何。然後,爲了通過語句緩存獲得更好的性能,請考慮1)您的應用程序以持續的方式使用多少個不同的PreparedStatements(即,不僅在初始化時,而且在應用程序生命週期內重複一次),以及2)將hibernate.c3p0.maxStatementsPerConnection設置爲大約該值或設置全局hibernate.c3p0.max_statements到(該值* expected_pool_size),但爲什麼不直接使用容易理解的maxStatementsPerConnection?]

+0

謝謝!我會嘗試。 –