最近仕事で問題を発見し、関連情報を検索して最終的に解決しました。次の記事では、主に Mysql の自動再接続メカニズムの JDBC 実装に関する関連情報を紹介します。この記事では、さまざまな解決策を紹介しています。 , 以下を見てみましょう。
はじめに
この記事では、主に JDBC の MySQL 自動再接続メカニズムの実装に関する関連コンテンツを紹介します。詳細な紹介を見てみましょう。
この問題を回避するには Connector/J 接続プロパティ 'autoReconnect=true' を使用しますcom.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
確認した結果、MySQL のタイムアウト設定に問題があることが判明しました
接続が 8 時間アイドル状態の場合(データベース操作は 8 時間以内に実行されません)、mysql は自動的に切断され、tomcat を再起動する必要があります
最初の方法: Hibernate が使用されていない場合は、接続 URL にパラメータを追加します: autoReconnect =true
jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&autoReconnectForPools=true
2 番目: 休止状態を使用している場合は、次の属性を追加します:
<property name="connection.autoReconnect">true</property> <property name="connection.autoReconnectForPools">true</property> <property name="connection.is-connection-validation-required">true</property>
3 番目: まだ c3p0 接続プールを使用している場合:
<property name="hibernate.c3p0.acquire_increment">1</property> <property name="hibernate.c3p0.idle_test_period">0</property> <property name="hibernate.c3p0.timeout">0</property> <property name="hibernate.c3p0.validate">true</property>
4 番目: 最悪の解決策
この問題の理由:
MySQL サーバーのデフォルトの "wait_timeout" は 28800 秒または 8 時間です。これは、接続が 8 時間を超えてアイドル状態になると、MySQL は自動的に接続を切断しますが、接続プールは接続がまだ有効であると考えられます (接続の有効性が検証されていないため)。アプリケーションが接続の使用を申請すると、上記のエラーが発生します。
⑴. 実際のテストでは、JDBC URL で autoReconnect 属性を使用できましたが、バージョン 5.1 を使用していたのは事実かもしれません。インターネットで言及されているように、4 より前のバージョンのみ。 ⑵。MySQL の最大 wait_timeout は 31536000 であり、再起動後に有効になるように my.cnf に追加する必要があります。これら 2 つのパラメータを同時に設定します。autoReconnect=true& failOverReadOnly=false
概要
以上がJDBC が Mysql に自動再接続メカニズムを実装する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。