HibernateORM を使用して、mysql データベースに C3p0 接続プールを使用しています。
以下はhibernate.cfg.xmlの設定です
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">300</property>
<property name="hibernate.c3p0.maxConnectionAge">3600</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="hibernate.c3p0.max_size">300</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1;</property>
そして、28800 秒後にデータベースに再接続するために、パラメータを設定しました -
c3p0.testConnectionOnCheckout=true
しかし、休止状態の例外に直面しています。
したがって、今 DB を呼び出して 8 時間 (または my.cnf の変数 wait_timeout を設定した時間) 待機すると、別の DB 呼び出しを行うと例外が発生します。スタックトレース -
org.hibernate.exception.JDBCConnectionException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2536)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
この問題の迅速な修正として、毎日朝にアプリ サーバーを再起動しています。
どんな助けでもいただければ幸いです
- ありがとう