sql >> データベース >  >> RDS >> Mysql

サーバーに何度かデプロイした後、データベースに接続できません

    構成プロパティでc3p0プロパティmaxIdleTimeを使用しましたが、c3p0プロパティはc3p0.を使用して構成されています。 プレフィックスまたはhibernate.c3p0.c3p0のいずれかを有効にすることに注意してください プロパティは、休止状態のヒューリスティックによって対応する接続​​プロバイダーを自動的に有効にします。ログには、c3p0を使用していることが表示されません。データソースが設定されていない場合、Hibernateはhibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProviderを使用します 。この接続プロバイダーには、hibernate.connection.pool_sizeを設定できる基本的な接続プールが組み込まれています。 、ただし、開発目的でのみ使用されます。実稼働環境では絶対に使用しないでください。

    トピック java.net.SocketException:壊れたパイプについて無限の議論があるかもしれません 。しばらくすると、開いたままになっていることに気付くでしょう。 次の理由で反対側で突然閉じられたプール内の接続:

    • ファイアウォールまたはルーターがアイドル状態の接続を制限する場合があります(MySQLクライアント/サーバープロトコルは通知しません)。
    • MySQLサーバーは、wait_timeoutを超えるアイドル状態の接続を閉じている可能性があります またはinteractive_timeout しきい値。

    これらの問題のトラブルシューティングに役立てるために、次のヒントを使用できます。

    • 最新(5.1.13以降)バージョンのJDBCドライバーが使用されています。
    • wait_timeoutであることを確認してください およびinteractive_timeout 十分に高く設定されています。 interactiveClientかどうかを確認します 使用されます。
    • tcpKeepaliveであることを確認してください 有効になっています。
    • 構成可能なファイアウォールまたはルーターのタイムアウト設定で、予想される最大の接続アイドル時間を確保できるようにします。
    • 接続プールから使用するときに接続が有効であることを確認します。 /* ping */で始まるクエリを使用します 完全なクエリの代わりに軽量のpingを実行します。 pingの構文は、ここで指定されているとおりである必要があることに注意してください。
    • 接続が長期間アイドル状態のままになっている場合は、接続を使用する前に明示的に検証してください。
    • 他のアプリケーションロジックが実行されている間、接続オブジェクトがアイドル状態のままになる時間を最小限に抑えます。

    このオプションのいくつかに準拠するには、Hibernateで使用できる接続プールを使用することをお勧めします。 Hibernateはcommons(dbcp、c3p0、およびproxool)をサポートしています。また、Hibernateで使用するようにWebサーバー上のJNDIデータソースを構成できます。これには接続プールがあります。 第7章を参照してください。 Connector/Jを使用した接続プール

    c3p0でHibernateを設定する場合は、このC3P0接続プールを設定する方法> 。 dbcpの設定例については、この投稿 MySQL、Hibernate、およびBroken PipeException を確認する必要があります。 。使用する接続プールはすべてあなた次第です。



    1. 特定の行の値によって動的に列名を取得する

    2. TSQL:現地時間をUTCに変換する方法は? (SQL Server 2008)

    3. パフォーマンスの驚きと仮定:カウントをオンに設定

    4. テーブルをロックせずに巨大なMySQL本番テーブルにインデックスを作成する