2009-02-15 19 views
24

Ostatnio wyczyściłem i ponownie zainstalowałem/skonfigurowałem wszystkie składniki mojego serwera WWW i DB. Używam usług IIS 6, .NET 3.5, SQL Server 2005. Dwa serwery są oddzielnymi maszynami wirtualnymi w tej samej domenie. Moja aplikacja internetowa działa idealnie ... 90% czasu. Ale co jakiś czas dostaję ten błąd lub ogólny błąd wykonania:Semafor Przekroczono limit czasu

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

Może wy mi dać kilka potencjalnych klientów na temat czego zacząć rozwiązywanie problemów? Naprawdę myślę, że przegapiłem coś w IIS.

Z góry dziękuję!

Odpowiedz

10

Po rozwiązaniu problemu przez wiele godzin i rozmowie przez telefon z moją grupą hostingową odkryli, że wystąpił problem z konfiguracją sieci. Rozwiązanie zostało wyjaśnione, gdy podczas testów jedna z VM nagle nie mogła znaleźć domeny, a zwykłe "pingowanie" do adresu IP każdego pudełka od czasu do czasu przestało działać. To całkowicie wykluczało DNS. Po tym, jak grupa hostingowa zastosowała odpowiednią konfigurację, aplikacja była stabilna i SZYBKA!

Dzięki za pomoc wszystkich!

+33

Czy mógłbyś szczegółowo opisać, jaka konfiguracja sieci została zaktualizowana? Jaka była poprawna pełna poprawka? Dzięki! – madhurtanwani

+31

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

+4

Brak informacji, ale ta odpowiedź dostała 7 głosów ... Podczas gdy niektóre odpowiedzi zawierają pełne informacje, ale otrzymują negatywne głosy .. Witamy w StackOverflow –

2

Czy można dwukrotnie sprawdzić obciążenie serwera db? Dostajemy je od czasu do czasu w naszym dev env, ale nigdy w praktyce.

+0

Obciążenie powinno być w porządku, błąd ten powstał, gdy testowana była tylko jedna osoba. –

+0

Załaduj tutaj nie musi oznaczać liczby osób korzystających z aplikacji, ale liczba procesów uruchomionych na serwerze db i ilość cpu/sieć instancji db jest przydzielana. – renegadeMind

2

Cóż, zacznę od upewnienia się, że używam najnowszej wersji sterowników sieciowych mojej maszyny wirtualnej.

Wygląda na to, że komunikacja między 2 systemami VMS zakończyła się niepowodzeniem. Spróbuj otworzyć gniazdo TCP między dwoma komputerami i sprawdź, czy zginie po pewnym czasie.

2

Kilka wskaźników to here. Zasadniczo błąd jest zgłaszany przez warstwę sieciową, a serwer SQL właśnie ją zgłasza.

Nadzieję, że pomaga.

0

sprawdzić, czy procedura składowana ma żadnej linii zbioru transakcji izolacji LEVEL READ UNCOMMITTED

Dla mnie to była kwestia

0

późno do gry, ale ja dostawałem ten sam błąd z sieci NET app/MS SQL. Strona hostowana w IIS na GoDaddy VPS, hosting ma wiele adresów IP, hostowanych przez DB na Azure.

Wierzę, że mój problem był (idiota!), Po prostu zapomniałem umieścić dedykowane adresy GD z adresów IP z GD w zaporze Azure dla serwera SQL. Z jakiegoś dziwnego powodu ruch dociera do/z GD/Azure poza faktycznym adresem IP witryny (adresy wiążące IIS) i działa.

Jednak często adresy rzeczywiste IIS wiążą się z Azure w celu interakcji z usługami SQL. Poprawiłem ustawienia zapory na platformie Azure, aby zawierały poprawne adresy IP z GoDaddy i (zapukać w drewno) błąd semafora już nie istnieje.

Innymi słowy, zanim zaczniesz szukać dużych problemów, zacznij od prostych czynności i pamiętaj, by sprawdzić proste ustawienia, takie jak ustawienia sieci/zapory.