2011-02-01 20 views
0

複数のサードパーティシステムと統合するWindows Azureアプリケーション(Lokad.CQRSアーキテクチャ)があります。これらの統合の1つは、mySQL上で行われます。すべてがうまくいっていましたが、最近、Windows Azureアプリケーションが接続できない1つのmySQLデータベースがあり、タイムアウトになっています。Windows AzureでのmySQL接続タイムアウト

System.TimeoutException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond ---> 
System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---> 
System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
--- End of inner exception stack trace --- 
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
at MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
--- End of inner exception stack trace --- 
at MyNetworkStream.HandleOrRethrowException(Exception e) 
at MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
at MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count) 
at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count) 
at MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count) 
at MySql.Data.MySqlClient.MySqlStream.LoadPacket() 
at MySql.Data.MySqlClient.MySqlStream.ReadPacket() 
at MySql.Data.MySqlClient.NativeDriver.Open() 
at MySql.Data.MySqlClient.Driver.Open() 
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings) 
at MySql.Data.MySqlClient.MySqlConnection.Open() 

重要ハイライト::

はここで関連のスタックトレースです

  • ターゲット・データベースは(MySQLのワークベンチを経由して接続するときに確認するために使用されるポートフォワーディング)は、Windows Azureのからアクセス可能です。
  • ターゲットDBとの統合は、Local Azure Dev Fabricから正しく機能します。
  • Windows Azureでの問題は、ブースのプール接続とプールされていない接続で発生します。
  • TCP/IP、通常のポート、SSLなし。
  • この操作のための接続タイムアウトが十分に大きい - 5秒、それが連続して失敗した(しかし常にではない遠くNE DCから位置非Azureのマシンから成功)

私たちは、Oracle、MS SQL、MySQLを持っていますさまざまな設定と構成(Linux/Windowsホスト型データベースサーバー)でWindows Azure上のLokad.CQRSから作業するPostgreSQL接続。しかし、この特定のmySQLの場合は、まったく私を混乱させるだけです。

問題の原因は何か推測できますか?

+0

あなたはアズールは話すことができることを確認するためにポート転送を使用しました。役割から直接接続しようとしましたか?おそらくRDPを使用して確認しますか? –

+0

ポート転送(TCPトンネル)は、当社独自のLokad.CQRSサーバーによって維持管理されていました。したがって、トンネルにアクセス可能であれば、サーバーは確実にアクセスできます。 Azure Fabricが何らかの形でこの接続にかなりのレイテンシを追加したため、サーバ側のタイムアウトが発生した可能性があります。詳細は自分の答えを見てください。 –

答えて

0

ソリューション:

Azureの生産ファブリックが、それは常にタイムアウトして、ターゲット・データベースへの接続にあまりにも多くの遅延を追加して、いくつかの理由。ヨーロッパの近くのマシンからの同じ接続は、接続タイムアウトを壊さなかった。

(5倍で)この特定のケースのための接続タイムアウトを増やすには、分散システムの残りの部分のためにあまりにも多くのリスクを追加することなく、事件を解決しました。

おそらく、問題はNE DCのネットワーク構成、障害のあるルーターなどにあります。

0

私は、この問題を追跡してWindows Azure上で実行されているossアプリケーションに問題がないことを確認したいので、たくさんの質問をするようにpingしました。あなたがそれを見ないと私に知らせてください。

ジャスSandhu、@jassand 相互運用戦略チーム http://interoperabilitybridges.com http://blogs.msdn.com/interoperability

関連する問題