1

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)) { ... ステートメント ..}

私はこれで行き止まりに達したような気がするので、どんな提案でも大歓迎です.

4

1 に答える 1

2

「データベースへの呼び出しが約3〜4分間行われなかった後、MySQL Openへの接続を取得するのにかかる時間。数分間データベースの呼び出しが行われない場合は8〜9秒かかります以上で接続を再開できます。」なぜそれが起こるのか:

Windows Azure Webサイトは、ホット(アクティブ)サイトとコールド(非アクティブ)サイトの概念を使用しています。Webサイトにアクティブな接続がない場合、サイトはコールド状態になり、ホストIISプロセスが終了します。そのWebサイトに新しい接続が確立されると、サイトの準備が整い、機能するまでに数秒かかります。このWebサイトにMySQLバックエンドが関連付けられている場合、IISホストプロセスが開始するのに時間がかかるため、要求されたサービスが提供されるまでにさらに数秒かかります。これが、数分間のアクティビティの後、応答時間が長くなる理由です。

Windows Azureのホット(アクティブ)およびコールド(非アクティブ)Webサイトの詳細については、次のプレゼンテーションを参照してください。http: //video.ch9.ms/teched/2012/na/AZR305.pptx

今回のように、共有ウェブサイトに移動したり、まったく不可能だったりしても、どうすればウェブサイトを常にホットに保つことができるのかわかりません。問題をWindowsAzureWebSitesフォーラムに書き込むことをお勧めします。そのチームの誰かが、適切な回答を提供します。

于 2012-09-12T19:14:42.267 に答える