2012-06-21 26 views
5

Windows Azure & SQL Azure'da çalışan bir dizi çevrimiçi açık artırma sistemine sahibiz. Her sistem tek bir web çalışanı ve bir veya daha fazla web rolünden oluşur. Her sistem ASP.NET MVC 3 ve Entity Framework, Repository Pattern ve StructureMap kullanıyor.SQL Azure: Daha Aralıklı Zaman Aşımları

İşçi rolü, ev temizliğinden sorumludur ve iki işlem grubunu çalıştırır. Bir grup her on saniyede bir, diğeri her saniyede çalışır. Her işlem büyük olasılıkla bir veritabanı sorgusu veya saklı yordamı çalıştıracaktır. Bunlar, genel arabirime ve arka ofise hizmet vermektedir. Diğer temel ham işlevlerin yanı sıra, her ikisi de, açıkken, saklı yordam salt okunur sorgularının yürütülmesiyle sonuçlanacak denetleyici yöntemlerini tekrar tekrar arayacak olan ekranlar sağlar. Tekrarlama sıklığı, müşteri başına yaklaşık 2-3 saniyedir. Tipik bir kullanım durumu 5 arka ofis penceresi ve 25 son kullanıcı penceresi açık - hepsi tekrar tekrar sisteme çarpıyordu.

Uzun bir süredir aralıklı SQL zaman aşımı hataları yaşıyorduk. En yaygın olanları üçü şunlardır:

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.

sadece öngörülebilir senaryo belirli kontrolör bir açık artırma sırasında -> sproc (yük tahminen bu) olay sırasında zaman aşımı başlar. Diğer tüm zamanlarda hatalar tamamen rastgele görünür ve kullanıcı hareketsizliği dönemlerinde bile bekar, iki ve üçlü vb. Örneğin, sistem hata olmadan 18 saat sürecek ve farklı temizlik yöntemlerinden 5 - 10 hata veya belki de bir kullanıcı oturum açıp hesabını görüntüleyecektir.

Diğer bilgi:

Yerel SSMS ve Azure web tabanlı sorgu aracı ikisini de kullanarak SQL Azure üzerinde etkilenen sorgular/SPROCs çalıştırmayı denedi - tüm hızla 1 saniye max yürütmek gibi görünüyor. Sorgu planları hiçbir şekilde bir SQL sorgu performans uzmanı veya bu konuda uzman herhangi bir uzman olmamakla birlikte şüpheli bir şey göstermiyor Planları Azure SQL Geçici Hata İşleme Blokları'nda olduğu gibi etkilenen tüm alanları sardık. Burada tartışılan http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/7a50985d-92c2-472f-9464-a6591efec4b3, zaman aşımlarını yakalamıyorlar ve “Valery M” ye göre bu iyi bir sebep.

Veritabanında asp.net üyelik bilgileri saklanmasına rağmen, herhangi bir oturum bilgisini veritabanında saklamıyoruz.

1 “SQL Azure sunucu örneği” kullanıyoruz; bu iki üretim için iki, tüm aşamalar için üç ve tüm beş veritabanına ev sahipliği yapıyor. Her 5 sistem genellikle aynı anda aktiftir, ancak herhangi bir zamanda birden fazla canlı yük kullanımı durumunda olma ihtimali düşüktür. Tüm web rolleri, çalışan rolleri ve SQL Azure sunucusu aynı Azure Coğrafi Bölgesinde bulunur.

Nereye bakmamız gerektiği konusunda herhangi bir düşünce var mı? Her sisteme kendi SQL Azure sunucusuna yardımcı olur mu? ... Bir çözümü kendi başımıza alamıyoruz - Microsoft'un bir destek bileti açması ve uygulamamızın içinde neler olup bittiği ile başlığın altına bakması mümkün olabilir - bu konuyla ilgili nasıl bir şey?

Şimdiden teşekkürler.

Ilan

+0

Ilan:

Microsoft ziyareti ile bu sayfayı desteğini açın. En sonunda ne yapmaya karar verdin? Bu arada, bu geçici hata iletisinde, Valery M, yürütme planı ve veritabanı dizinleri düzgün görünüyorsa, o zaman çözemeyeceğiniz zaman aşımlarından en azından bazılarını kullanmak için deseni kullanmanızın olası olduğunu belirtir. –

cevap

İlgili konular