2011-02-01 6 views
0

우리는 여러 타사 시스템과 통합되는 Windows Azure 응용 프로그램 (Lokad.CQRS 아키텍처)을 보유하고 있습니다. 이러한 통합 중 하나가 mySQL에서 이루어집니다. 모든 것이 잘되었지만 요즘에는 Windows Azure 응용 프로그램이 연결할 수없는 하나의 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의 워크 벤치를 통해 연결하는 동안 확인하는 데 사용되는 포트 포워딩) 윈도우 Azure에서 액세스 할 수 있습니다;
  • 대상 DB와의 통합은 Local Azure Dev Fabric에서 올바르게 작동합니다.
  • Windows Azure에 대한 문제는 부스 풀 및 풀링되지 않은 연결에 대해 발생합니다.
  • TCP/IP, 일반 포트, SSL 없음; 이 작업
  • 연결 제한 시간은 충분히 큰 - 오초과 지속적으로 실패 (그러나 항상 멀지 않은 거리에 NE DC에서 위치가 아닌 푸른 기계에서 성공)

우리는 오라클, MS SQL, MySQL은이 다양한 설치 및 구성 (Linux/Windows 호스팅 데이터베이스 서버)에서 Windows Azure를 통해 Lokad.CQRS에서 작동하는 PostgreSQL 연결을 지원합니다. 그러나이 특정한 mySQL 경우는 완전히 혼란 스러울뿐입니다.

무엇이 문제의 원인 일 것이라고 추측합니까?

+0

당신은 당신이 푸른 이야기 할 수 있도록 포트 포워딩을 사용했다. 역할에서 직접 연결을 시도 했습니까? 아마 RDP를 사용하고 검증할까요? –

+0

포트 포워딩 (TCP 터널)은 자체 Lokad.CQRS 서버에 의해 유지 관리되었습니다. 따라서 터널에 액세스 할 수 있으면 서버가 확실히 액세스 할 수 있습니다. 문제는 아마도 Azure Fabric이이 연결에 상당한 대기 시간을 추가하여 서버 측 시간 초과를 발생시킨 것입니다. 자세한 내용은 내 대답을 참조하십시오. –

답변

0

솔루션 :

푸른 생산 원단이 대상 데이터베이스에 연결하기에 너무 많은 대기 시간을 추가했다 몇 가지 이유를 들어

, 항상 시간 초과했다. 유럽의 인근 기계와 같은 연결은 연결 시간 제한을 깨지 못했습니다.

이 특정 사례에 대한 연결 시간 초과를 늘리면 나머지 분산 시스템에 대한 위험을 너무 높이 지 않고 사례를 해결할 수있었습니다.

아마도 NE DC의 네트워크 구성에 문제가 있거나 라우터가 잘못되었거나간에 문제가 발생했을 수 있습니다.

0

저는이 문제를 추적하고 Windows Azure에서 실행되는 oss 응용 프로그램에 문제가 없는지 확인하는 데 도움이되도록 질문을하기 위해 ping했습니다. 네가 그걸 보지 않으면 나에게 알려줘.

자스 산두, @jassand 상호 운용성 전략 팀 http://interoperabilitybridges.com http://blogs.msdn.com/interoperability