2012-06-21 4 views
5

Windows Azure & SQL Azure에서 실행되는 5 가지 온라인 경매 시스템이 있습니다. 각 시스템은 단일 웹 작업자와 하나 이상의 웹 역할로 구성됩니다. 각 시스템은 ASP.NET MVC 3 및 ​​Entity Framework, 저장소 패턴 및 StructureMap을 사용합니다.SQL Azure : 간헐적 인 제한 시간 초과

작업자 역할은 하우스 키핑을 담당하며 두 개의 프로세스 그룹을 실행합니다. 한 그룹은 매 10 초마다, 다른 그룹은 매 초마다 실행됩니다. 각 프로세스는 데이터베이스 쿼리 또는 저장 프로 시저를 실행합니다. 이것들은 Quartz.net으로 예정되어 있습니다

웹 역할은 공용 인터페이스와 백 오피스를 제공합니다. 다른 기본적인 특징들 중에서도이 두 가지 기능은 열려있을 때 저장 프로 시저 읽기 전용 쿼리를 실행하게 될 컨트롤러 메서드를 반복적으로 호출하는 화면을 제공합니다. 반복 횟수는 클라이언트 당 약 2-3 초입니다. 일반적인 사용 사례는 5 개의 백 오피스 윈도우가 열려 있고 25 개의 최종 사용자 윈도우가 열려있어 모두 시스템에 반복적으로 충돌합니다.

오랫동안 우리는 간헐적 인 SQL 시간 초과 오류가 발생했습니다. 가장 일반적인 것들의 세 가지가 있습니다 :

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

유일한 예측 가능한 시나리오는 특정 컨트롤러가 경매 중입니다 ->의 sproc은 (로드 할 수 아마도 인해) 이벤트 기간 동안 타임 아웃을 시작합니다. 다른 모든 시간에 오류는 완전히 무작위로 나타나며 사용자가 활동하지 않는 동안에도 싱글, 2, 3 등으로 나타납니다. 예를 들어 시스템은 오류없이 18 시간이 지나면 다른 관리 방법으로 5 ~ 10 회의 오류가 발생할 수 있습니다. 또는 사용자가 로그온하여 계정을 보았을 수 있습니다.

기타 정보 :

나는 지역 SSMS와 푸른 웹 기반의 쿼리 도구를 모두 사용하여 SQL 애저에 영향을받는 쿼리/sprocs가를 실행하려고 한 - 모두가 빠르게 일초 최대를 실행하는 것 같다. SQL 쿼리 성능 전문가 나 그와 같은 전문가의 다른 종류가 아니더라도 쿼리 계획에 의심스러운 내용이 전혀 표시되지 않습니다. J

Azure SQL Transient Fault Handling Block에 영향을받은 모든 영역을 래핑했습니다. 여기에 설명 된 http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3, 그들은 타임 아웃을 포착하지 않으며, "발레리 M"에 따르면 이것은 좋은 이유입니다.

asp.net 멤버 자격 정보가 데이터베이스에 저장되어 있지만 우리는 데이터베이스에 세션 정보를 저장하지 않습니다.

5 개의 데이터베이스를 모두 호스팅하는 "SQL Azure 서버 인스턴스"를 두 개, 준비를 위해 두 개, 프로덕션을 위해 세 개를 사용합니다. 주어진 시간에 라이브로드 사용 상태에있는 시스템은 2 개 이상일 것 같지 않지만 일반적으로 5 개 시스템은 모두 동시에 활성화됩니다. 모든 웹 역할, 작업자 역할 및 SQL Azure 서버는 동일한 Azure Geographic Region에 있습니다.

어디에서 볼 수 있을까요? 각 시스템에 자체 SQL Azure 서버를 제공하는 데 도움이됩니까? ... 솔루션 자체가 실패한 경우 - Microsoft에서 지원 티켓을 열고 응용 프로그램의 진행 상황을 살펴볼 수 있습니까? 한 가지 방법은 무엇입니까?

미리 감사드립니다.

일란

+0

일란 :

는 마이크로 소프트의 방문이 페이지를 지원을 엽니 다. 너 무슨 짓을 한거야? 그건 그렇고, 그 일시적인 오류 게시물, 발레리 M은 실행 계획과 데이터베이스 인덱스가 괜찮아 보인다면, 아마 당신이 해결할 수없는 시간 제한의 적어도 일부에 대한 패턴을 사용하는 것이 좋습니다. –

답변

5

SQL 애저는 멀티 테넌트 시스템이며 다른 세입자의 사용을 통해 잠재적으로 고통받는 수 있습니다. Microsoft는 다른 임차인을 억제하여 OK 일을하지만, 한동안 SQL Azure 쿼리가 시간 초과되었습니다.지금 당장 밖으로 응용 프로그램에서 오류의 동일한 유형을 경험하고있어, https://support.microsoft.com/oas/default.aspx?gprid=14919&st=1&wfxredirect=1&sd=gn

관련 문제