2009-02-15 57 views
24

Son zamanlarda web ve DB sunucularının tüm bileşenlerini sildim ve yeniden kurdum/yapılandırdım. IIS 6, .NET 3.5, SQL Server 2005 çalıştırıyorum. İki sunucu aynı etki alanındaki ayrı VM'lerdir. Web uygulamam mükemmel bir şekilde çalışıyor ... Zamanın% 90'ı.Semaphore Zaman Aşımı Süresi

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.)

Eğer bana sorun gidermeye başlamak nerede bazı potansiyel verebilir: Ama her şimdi ve sonra bu hatayı veya genel bir çalışma zamanı hatası alıyorum? Ben gerçekten IIS'de bir şey özledim düşünüyorum.

Şimdiden teşekkürler!

cevap

10

Saatlerce sorun gidermeden ve hosting grubumla telefonda oturduktan sonra, ağ yapılandırmasıyla ilgili bir sorun olduğunu keşfettiler. Testim sırasında, sanal makineden birinin aniden etki alanını bulamadığı ve her kutuya ait IP'ye basit bir "ping" in zaman zaman çıkabileceği bir çözüm ortaya çıktı. Bu, DNS'i tamamen reddetti. Barındırma grubu sonundaki uygun yapılandırmayı uyguladıktan sonra uygulama kararlı ve HIZLI oldu!

Herkesin yardımları için teşekkürler! saklı yordam Benim için bu konu oyuna Geç

+33

, hangi ağ yapılandırmasının güncellendiği konusunda ayrıntılı bilgi verebilir misiniz? Doğru tam düzeltme neydi? Teşekkürler! – madhurtanwani

+31

http://xkcd.com/979/ :( – Jonesopolis

+4

Bu cevap 7 oy aldı ... Bazı cevaplar tüm ayrıntılara sahip ama olumsuz oylar alırken StackOverflow'a hoş geldiniz –

2

Yükü db sunucusunda iki kez kontrol edebilir misiniz? Onları bir zamanlar, bizim dev env'de bir kez olsun, ama hiçbir zaman prod env'de değiliz.

+0

Yük iyi olmalı, bu hata yalnızca bir kişi test ederken üretildi. –

+0

Buraya yükleme, uygulamayı kullanan kişi sayısı anlamına gelmez, ancak db sunucusunda çalışan işlemlerin sayısı ve db örneğinin cb/ağ miktarının tahsis edildiği anlamına gelir. – renegadeMind

2

Sanal makinemin ağ sürücülerinin en son sürümünü çalıştırdığımı garanti ederek başlarım.

2 VMS'niz arasında iletişim kurulur gibi geliyor. İki makine arasında bir TCP soketi açmayı deneyin ve belli bir süre sonra ölüp görmediğini görün.

2

Bazı işaretçiler here'dir. Temel olarak ağ katmanı tarafından hata atılıyor ve SQL sunucusu bunu bildiriyor.

Bu yardımcı olur umarım.

0

onay uygulama/MS SQL. GoDaddy VPS'de IIS'de barındırılan sitenin barındırıcısı, Azure'da barındırılan çok sayıda IP'ye sahip.

Sorunumun (idiot!) Olduğuna inanıyorum, GD sitesinin IP adreslerini GD'den Azure güvenlik duvarına SQL sunucusuna koymayı unuttum. Bazı garip nedenlerden dolayı trafik, web sitesi (IIS ciltleme adresleri) için gerçek IP adresinin dışında GD/Azure'dan geliyor ve çalışıyor.

Ancak, çoğu zaman gerçek IIS bağlanma adresleri, SQL hizmetleriyle etkileşimde bulunmak için Azure'a çağrı yapanlardır. Azure'daki güvenlik duvarı ayarlarını GoDaddy'den doğru IP'leri içerecek şekilde düzeltdim ve (odun nakavt) semafor hatası şimdi kaybolmuş gibi görünüyor. Başka bir deyişle, büyük sorunlar aramaya başlamadan önce, basit başlayın ve ağ/güvenlik duvarı ayarları gibi kolay şeyleri kontrol ettiğinizden emin olun.

0

oldu

READ UNCOMMITTED herhangi bir satır SET HAREKET yalıtım düzeyi vardır, ancak bir .NET web ile bu aynı hatayı alıyorum olup olmadığını