2009-02-15 11 views
24

Ich habe kürzlich alle Komponenten meiner Web- und DB-Server gelöscht und neu installiert/konfiguriert. Ich verwende IIS 6, .NET 3.5, SQL Server 2005. Die beiden Server sind separate VMs in derselben Domäne. Meine Web App funktioniert perfekt ... 90% der Zeit. Aber ab und bekomme ich diesen Fehler oder einen allgemeinen Laufzeitfehler:Semaphor Timeout Zeitraum

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

Könnt ihr mich ein paar führen, wo die Fehlersuche beginnen? Ich glaube wirklich, dass ich etwas in IIS verpasst habe.

Vielen Dank im Voraus!

Antwort

10

Nach der Fehlerbehebung für diese Stunden und sitzen auf dem Telefon mit meiner Hosting-Gruppe haben sie festgestellt, dass ein Problem mit ihrer Netzwerkkonfiguration war. Die Lösung wurde klarer, als während einer der VMs plötzlich die Domain nicht gefunden werden konnte und ein einfacher "Ping" zur IP jeder Box von Zeit zu Zeit ausging. Dies schloss DNS vollständig aus. Nachdem die Hosting-Gruppe die richtige Konfiguration an ihrem Ende angewendet hat, war die App stabil und schnell!

Danke für die Hilfe aller!

+33

könnten Sie detailliert angeben, welche Netzwerkkonfiguration aktualisiert wurde? Was war die korrekte vollständige Lösung? Vielen Dank! – madhurtanwani

+31

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

+4

Keine Details, aber diese Antwort hat 7 Stimmen ... Während einige Antworten alle Details haben, aber negative Stimmen erhalten. Willkommen zu StackOverflow. –

2

Können Sie die Belastung auf dem Datenbankserver überprüfen? Wir bekommen sie hin und wieder in unserem dev env, aber nie in der prod env.

+0

Die Ladung sollte in Ordnung sein, dieser Fehler wurde erzeugt, während nur eine Person es getestet hat. –

+0

Laden hier bedeutet nicht unbedingt die Anzahl der Personen, die die Anwendung verwenden, sondern die Anzahl der Prozesse, die auf dem Datenbankserver ausgeführt werden, und die Menge, mit der die Datenbankinstanz cpu/network zugewiesen wird. – renegadeMind

2

Nun, ich würde damit beginnen, sicherzustellen, dass ich die neueste Version der Netzwerktreiber meiner virtuellen Maschine laufen lasse.

Klingt wie Comms zwischen Ihren 2 VMS fehlschlägt. Versuchen Sie einen TCP-Socket zwischen den beiden Rechnern zu öffnen und sehen Sie, ob er nach einer gewissen Zeit abbricht.

2

Einige Zeiger sind here .Basic der Fehler wird von der Netzwerkschicht ausgelöst und SQL Server meldet es nur.

Hoffe, dass hilft.

0

geprüft, ob die gespeicherte Prozedur jede Zeile SET TRANSACTION ISOLATION LEVEL hat UNCOMMITTED LESEN

Für mich das Problem war

0

spät zum Spiel, aber ich war immer das gleiche Fehler mit einer .NET Web App/MS SQL. Website in IIS auf GoDaddy VPS gehostet, Hosting hat mehrere IPs, DB bei Azure gehostet.

Ich glaube, mein Problem war (Idiot!), Ich habe einfach vergessen, die dedizierten IP-Adressen der GD-Site von GD in die Azure-Firewall für den SQL-Server zu legen. Aus irgendeinem seltsamen Grund kommt der Verkehr zu/von GD/Azure außerhalb der eigentlichen IP-Adresse der Website (den IIS-Binding-Adressen) und funktioniert.

In den meisten Fällen sind die tatsächlichen IIS-Bindungsadressen diejenigen, die Azure aufrufen, mit den SQL-Diensten zu interagieren. Ich habe die Firewall-Einstellungen auf Azure korrigiert, um die korrekten IPs von GoDaddy einzubeziehen und (klopfe auf Holz) scheint der Semaphorfehler jetzt weg zu sein.

Mit anderen Worten, bevor Sie nach großen Problemen suchen, starten Sie einfach und achten Sie darauf, einfache Dinge wie Netzwerk/Firewall-Einstellungen zu überprüfen.