2009-02-15 24 views
24

Recentemente ho cancellato e reinstallato/configurato tutti i componenti dei server Web e DB. Sono in esecuzione IIS 6, .NET 3.5, SQL Server 2005. I due server sono VM separate nello stesso dominio. La mia app Web funziona perfettamente ... il 90% delle volte. Ma di tanto in tanto ottengo questo errore o un errore di runtime generico:Periodo di timeout del semaforo

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

Can you guys darmi qualche porta su dove iniziare la risoluzione dei problemi? Penso davvero di aver perso qualcosa in IIS.

Grazie in anticipo!

risposta

10

Dopo aver risolto il problema per ore e seduto al telefono con il mio gruppo di hosting, hanno scoperto che c'era un problema con la loro configurazione di rete. La soluzione è stata resa più chiara quando durante i miei test una delle macchine virtuali non è stata in grado di trovare il dominio, e un semplice "ping" all'IP di ciascuna casella dell'altra avrebbe saltato occasionalmente. Questo escludeva completamente DNS. Dopo che il gruppo di hosting ha applicato la corretta configurazione sulla loro estremità, l'app è stata stabile e VELOCE!

Grazie per l'aiuto di tutti!

+33

puoi specificare in dettaglio quale configurazione di rete è stata aggiornata? Qual è stata la correzione completa corretta? Grazie! – madhurtanwani

+31

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

+4

Nessun dato, ma questa risposta ha ottenuto 7 voti ... Mentre alcune risposte hanno tutti i dettagli ma ottengono voti negativi.Accedi a StackOverflow –

2

Si può controllare due volte il carico sul server db? Li otteniamo una volta ogni tanto nel nostro dev env, ma mai nel prod env.

+0

Il carico dovrebbe essere corretto, questo errore è stato prodotto mentre solo una persona lo stava testando. –

+0

Carica qui non significa necessariamente il numero di persone che utilizzano l'applicazione, ma il numero di processi in esecuzione sul server db e l'importo od cpu/network che l'istanza di db viene allocata. – renegadeMind

2

Bene, vorrei iniziare assicurandomi di eseguire l'ultima versione dei driver di rete della mia macchina virtuale.

Suoni come le comunicazioni non funzionano tra i 2 VMS. Prova ad aprire un socket TCP tra le due macchine e vedere se muore dopo un certo periodo di tempo.

2

Alcuni indicatori sono here. Fondamentalmente l'errore viene generato dal livello di rete e il server SQL lo sta segnalando.

Spero che questo aiuti.

0

verifica se la stored procedure ha qualche linea SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Per me questo è stato il problema

0

ritardo al gioco, ma mi è stato sempre lo stesso errore con un web .NET app/MS SQL. Sito ospitato su IIS su GoDaddy VPS, l'hosting ha più IP, DB ospitato su Azure.

Credo che il mio problema fosse (idiota!), Ho semplicemente dimenticato di inserire gli indirizzi IP dedicati del sito GD da GD nel firewall di Azure per il server SQL. Per qualche strana ragione il traffico arriva a/da GD/Azure al di fuori dell'indirizzo IP effettivo per il sito Web (gli indirizzi di binding di IIS) e funziona.

Ma il più delle volte gli attuali indirizzi di binding di IIS sono quelli che chiamano Azure per interagire con i servizi SQL. Ho corretto le impostazioni del firewall su Azure per includere gli IP corretti da GoDaddy e (knock on wood) l'errore del semaforo sembra scomparso ora.

In altre parole, prima di iniziare a cercare grandi problemi, inizia semplice e assicurati di controllare le cose semplici come le impostazioni di rete/firewall.

Problemi correlati