MySQL Connector for .net を使用して接続を開くと、MySQL からの応答時間が非常に長くなる問題を解決しようとしています。
--skip-name-resolve を使用して Azure VM (Server 2008) で実行されている MySQL 5.5 をインストールしましたが、データベース ユーザー アカウントのホスト制限で IP アドレスが使用されています。Azure で実行されている WCF サービスで最新の MySQL Connector for .net を使用しています (同じ場所の米国東部で、アフィニティ セットなしの試用版サブスクリプションを使用しています)。WCF サービスの接続文字列は、MySQL をホストしている VM の内部 IP アドレスをサーバー パラメーター値として使用しています。「プーリング = true; 最小プール サイズ = 2;」もあります。念のため(これらのパラメータなしでも試しました)。
WCF をトレースすると、サービスが実行されて要求が処理されると、クエリの応答時間がかなり良くなり (各クエリの結果が一意であり、キャッシュされていない場合でも)、MySQL のパフォーマンスに問題はありません。
しかし、解決できなかった大きな問題は、データベースへの呼び出しが約 3 ~ 4 分間行われなかった後、MySQL Open への接続を取得するのにかかる時間の長さです。数分間データベース呼び出しが行われなかった場合、接続を再度開くのに 8 秒または 9 秒以上かかります。実際の「conn.open();」をラップしました 呼び出しの前後にトレースステートメントを使用します。これは、数分間非アクティブになった後、何度もログに記録されている動作です。
ちなみに、MySQL コネクタが接続プールを管理していることを確認するために、'using' スタイルの接続処理も試しました (そして現在も使用しています)。
例: using (var conn = new MySqlConnection(Properties.Settings.Default.someConnectionString)) { ... ステートメント ..}
私はこれで行き止まりに達したような気がするので、どんな提案でも大歓迎です.