7

Tłotropienia połączenie z bazą danych wydaje

Mamy szereg aplikacji internetowych na różnych serwerach internetowych, które łączą się z jednym serwerem bazy danych. W ciągu ostatnich kilku miesięcy zauważyliśmy, że co jakiś czas nasze serwery internetowe nie będą mogły połączyć się z serwerem bazy danych.

naszego środowiska

Mamy kilka różnych środowisk internetowych, niektóre z ColdFusion i innym systemem .NET. Aplikacje .NET to zarówno formularze sieciowe, jak i MVC. Obejmują wiele wersji od 2.0 do 4.5. Zarówno serwery WWW ColdFusion, jak i .NET są maszynami opartymi na systemie Windows. Zarówno środowiska internetowe ColdFusion, jak i .NET są skupione, a niektóre z nich są fizyczne, podczas gdy inne są wirtualne.

Nasz serwer bazy danych to SQL Server 2008 r2. Zawiera wiele baz danych. Każda aplikacja ma własnego użytkownika bazy danych, z którym łączy się z serwerem, który daje mu dostęp do określonej bazy danych.

inne fakty

  • Kiedy zauważymy problemy, które występują w krótkich seriach, które trwać od kilku sekund do kilku minut.
  • Gdy zauważamy problemy, seria zawiera błędy z wielu różnych aplikacji, a nie tylko z jednej aplikacji na raz.
  • Gdy zauważamy problemy, pakiet zawiera błędy z aplikacji pochodzących z różnych środowisk internetowych. (To skłania nas do myślenia, że ​​możemy wykluczyć, że same aplikacje są problemem).
  • Problemy z połączeniem występują w różnych momentach w ciągu dnia i nocy. Nie zawsze są one w czasach wysokiego zużycia.
  • Monitorowaliśmy takie rzeczy, jak liczba połączeń użytkowników, pamięć, IO, użycie procesora itp. ... i nie widzieliśmy żadnych skoków ani niczego, co mogłoby wskazywać na problem.
  • Zainstalowaliśmy wireshark na serwerach internetowych i serwerach db w nadziei, że uda nam się złapać problem bez powodzenia.

Pytania

  1. Czy ktoś ma sugestie gdzie mam szukać dalej?
  2. Czy są jakieś właściwości bazy danych, które mogą to powodować?
  3. Czy istnieje sposób lepszego "monitorowania" połączenia między bazą danych a serwerem sieciowym?
  4. Czy jest coś, co można zrobić po stronie aplikacji, aby lepiej zrozumieć, co się dzieje?

Błędy złapany przez Apps

  • błędów .NET
    • A lub wystąpił błąd specyficzne dla instancji podczas ustanawiania połączenia z SQL Server związanych z siecią. Serwer nie został znaleziony lub nie był dostępny.Sprawdź, czy nazwa instancji jest poprawna i czy program SQL Server jest skonfigurowany do zezwalania na połączenia zdalne. (dostawca: dostawca potoków nazwanych, błąd: 40 - nie można otworzyć połączenia z serwerem SQL)
    • Limit czasu wygasł. Okres oczekiwania upłynął przed zakończeniem operacji lub serwer nie odpowiada.
    • Wystąpił błąd poziomu transportu podczas odbierania wyników z serwera. (dostawca: dostawca protokołu TCP, błąd: 0 - upłynął limit czasu semafora.)
    • Limit czasu wygasł. Limit czasu upłynął przed uzyskaniem połączenia z puli. Mogło tak się stać, ponieważ wszystkie połączone połączenia były w użyciu i został osiągnięty maksymalny rozmiar puli.
  • błędy ColdFusion
    • Błąd Wykonywanie kwerendy bazy danych. Połączenie TCP/IP z hostem nie powiodło się. java.net.ConnectException: Przekroczono limit czasu połączenia: podłącz
      Wystąpił błąd w linii 38.
    • Błąd podczas wykonywania zapytania do bazy danych. Połączenie zostało zresetowane przez urządzenie równorzędne: błąd zapisu gniazda
      Wystąpił błąd w linii 91.
    • Błąd podczas wykonywania zapytania do bazy danych. Upłynął limit czasu próbuje nawiązać połączenie
      Wystąpił błąd na linii 38.
+1

To brzmi bardziej jak problem z łącznością sieciową niż problem z bazą danych. –

+0

To naprawdę brzmi jak problem sieciowy z kartą sieciową, przełącznikiem, routerem, kablem itp. –

+0

Jaki byłby najlepszy sposób na * poznanie * tego na pewno lub wyśledzenia? – Jason

Odpowiedz

1

W CF, kiedyś miałem podobny problem, co było zobaczyć. Miałem CF na 1 serwerze i sql 2008 r2 na innym serwerze. Widziałbym błędy CF, tak jak to opisałeś poniżej. Aby ułatwić śledzenie go do błędu sieci napisałem coś takiego:

1) stworzył down.bat

tracert serverip

2) i następnie umieścić wokół zapytania.

Gdy zapytania generowane błąd chciałbym wykonać

<cfmail to="ME" from="Server" subject="SQL DOWN"> 

    Server Debugging Info: 
    ------------------------------------------------------------  
    #now()# 

    #cfcatch.Detail# 

    #cfcatch.Message# 

    #log#   

    </cfmail> 

To pomogło mi rozwiązać moją sytuację który zakończył się sprzętu w centrum danych.

Powiązane problemy