2015-04-24 16 views
11

Bir AJAX çağrısında bir Azure ASP.NET Web Sitesine aralıklı olarak meydana gelen bu hata için avlanıyordum ve bugün sonunda günlüklerimizde yakaladım. Bir kilit işlemin engellendiğinden şüpheleniyordum, ancak Azure SQL veritabanına bağlanmaya çalıştığı anlaşılıyor. Aynı bölgede bulunanAzure SQL'de Aralıklı Bağlantı Zaman Aşımı AJAX İsteğinde

Server=tcp:<server>,1433;Database=<database>;User ID=<user>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30 

web Hem ve Azure SQL veritabanı:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
This failure occurred while attempting to connect to the routing destination. 
The duration spent while attempting to connect to the original server was - 
[Pre-Login] initialization=28; handshake=43; [Login] initialization=0; authentication=0; [Post-Login] complete=2; 

Bu kullanıyorum bağlantı dizesi: Burada

istisna mesajdır. Veritabanının ölçeği Standart - S0, Azure Web Sitesi Standart - Küçük bir örnektir.

Bu sorunla karşılaştınız mı?

+1

Bu aralıklı veya sürekli olarak mı oluyor? Kodunuza yerleşik geçici hata işleme ve tekrar deneme mantığınız var mı? Öneriler ve en iyi uygulamalar için http://azure.microsoft.com/en-us/documentation/articles/sql-database-connect-central-recommendations/ adresini okuyun. – Shantanu

+0

@Shantanu Öneriniz için teşekkürler. Transient Fault kullanımının doğru çözüm olduğunu düşünüyorum ama belki de çözmeye çalıştığım problem için değil. Uygulama, bir kullanıcının telefon üzerinden bir kişiye sorduğu soruların serisidir ve daha sonra cevaplarını kaydeder. Bu 5 saniyeden uzun sürerse, kullanıcı için sorunlara neden olur. Veritabanını zaman aşımı sorununu çözmüş gibi görünen Standart S2'ye yükselttim. – TheJesterCrown

+0

Uygulamanız için ne tür bir yükleme görüyorsunuz? Kaç eşzamanlı kullanıcı var? – Shantanu

cevap

1

Sorun, istemciden İnternet'e bağlantıda olduğu gibi geliyor. Ajax çağrısı istemci tarafında JavaScript yapıyorsanız, web uygulaması ve veritabanının aynı bölgede olup olmadığı (en azından performans kadarıyla) önemli değildir. Çok yavaş bir bağlantı zaman aşımı olarak adlandırılacaktır.

Bu aralıklı olduğundan, bu hatayı JavaScript'te yakalamanızı ve istemcinin kaydetmeyi yeniden denemesini istemenizi öneririz.

+2

Başarısız olan bağlantı, web sunucusu (ör. Azure Web Uygulaması) ile veritabanı sunucusu (Azure SQL) arasındaydı. Sorunumun Azure SQL'de kullandığım örnek boyutu olduğunu düşünüyorum. S0 (yukarıdaki @AKS yorumunu ekledim). Öneri için teşekkürler! Sorunumu çözdüğümde kararımı vermeliydim. – TheJesterCrown

İlgili konular