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

AmazonRDSマルチAZフェイルオーバーを処理するようにGlassFishJDBC接続プールを設定します

    以前にコメントしたように、開いていてデータベースに接続されているソケットは、接続が失われたことに気付かないため、OSソケットのタイムアウトがトリガーされるまで接続されたままでした。 。

    この問題を解決するには、JDBC接続文字列またはJDNI接続構成/プロパティのソケットタイムアウトをオーバーライドして、 socketTimeoutを定義する必要があります。 paramをより短い時間に。

    定義された値より長い接続は、使用されている場合でも強制終了されることに注意してください(これを確認できていませんが、私が読んだものです)。

    コメントで言及している他の2つのパラメーターは、 connectTimeout です。 およびautoReconnect

    これが私のJDBC接続文字列です:

    jdbc:(...)&connectTimeout=15000&socketTimeout=60000&autoReconnect=true 
    

    また、JavaのDNSキャッシュを無効にしました

     java.security.Security.setProperty("networkaddress.cache.ttl" , "0"); 
     java.security.Security.setProperty("networkaddress.cache.negative.ttl" , "0"); 
    

    これを行うのは、JavaがTTLを尊重せず、フェイルオーバーが発生すると、DNSは同じですが、IPが変更されるためです。

    アプリケーションサーバーを使用しているため、アプリケーション自体ではなく、-Dnetを使用してGlassfishを起動するときに、DNSキャッシュを無効にするパラメータをJVMに渡す必要があります。




    1. 前の行の値からの増加/減少率を計算します

    2. オンプレミスのセキュリティ制御と主要なクラウドプロバイダーのマッピング–バージョン4.0

    3. MariaDBテンポラルテーブルとは何ですか?

    4. EXPLAINANALYZEを理解する方法