Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 14553|Odpowiedź: 0

[Komunikacja] Problem z limitem połączeń użytkowników SQL Server

[Skopiuj link]
Opublikowano 26.11.2014 15:11:08 | | | |

Połączenia użytkownika SQLSERVER

Ogólne statystyki Połączenia użytkownika instancji SQL w liczniku wydajności odpowiadają mu

Możesz także odnieść się do TCPv4Connections Established w liczniku wydajności  


Na komputerze z usługą SQLSERVER,Połączenia TCPV4 nawiązane & Mssql UserConnectionsTe dwa parametry są zasadniczo zsynchronizowane i określane jako liczba połączeń w poniższej zawartości testu


Ta liczba połączeń jest ograniczona, podobnie jak maksymalna liczba limitów współbieżności. Gdy ten limit zostanie osiągnięty, zapytania stają się nieodpowiedzialne nawet jeśli dostępne są wolne zasoby CPU, IO i MEM (niektóre, ale nie wszystkie zapytania są dotknięte)

Maksymalna wartość nawiązanych połączeń TCPV4 & Mssql UserConnections zależy od następujących czynników
     a. Złożoność instrukcji wykonania jest powiązana z tym, że im bardziej złożone zdanie, tym mniejsza maksymalna liczba połączeń (ten efekt jest bardzo istotny)
     b. Jest ona powiązana z współbieżnością wątków żądania,
10 procesów, każdy proces otwiera 5 000 wątków do żądania,WYBIERZ getdate()Oświadczenie jest już porzucone, gdy osiąga około 4000 (z tego co rozumiem, chociaż wiele wątków nie żądało zasobów, liczba żądań jest duża, co również ma wpływ).
10 procesów, każdy proces otwiera 1000 wątków do żądania, WYBIERZ getdate()Oświadczenia mogą przekraczać 10 000.
    c. Jest powiązana z częstotliwością żądań wątków
Jeśli każdy wątek wykona zapytanie i zatrzyma się na 0-10 000 milisekund, zajmie mniej połączeń niż gdyby nie był zawieszony
    d. W teście stwierdzono również, że niektóre niezamknięte połączenia powodują zawyżenie licznika, co nie zostało omówione
10 procesów, każdy proces otwiera 1000 wątków żądań, losowo zatrzymuje się (0 do 10 sekund) po każdym zapytaniu na serwerze. Wyniki testów są następujące:
Wykonanie:WYBIERZ * Z [system]. [dbo]. [DBA_alert](to zapytanie zwraca 200 linii, a maksymalna liczba połączeń to 700 i problem zaczyna być wydawany)
Gdy liczba połączeń osiąga 700, zaczynają pojawiać się błędy, a przy 1200 pojawia się duża liczba błędów, a liczba połączeń około 1800 utknie i przestaje rosnąć. Błędy i powolne połączenia są liczne
Wykonanie:WYBIERZ getdate()Czas trwania zdania(Maksymalna liczba połączeń to 3500 i zaczyna się problem )
Gdy liczba połączeń osiąga 3500, niektóre z nich zaczynają zgłaszać błędy, a najwyższe ciśnienie sięga około 11000, a liczba połączeń nadal powoli rośnie. Błędy i powolne przeszkody połączenia

Wniosek jest następujący: w danych warunkach ciśnienia: najprostsze do wykonaniaMaksymalna liczba połączeń może wynosić do 3500, gdy SELECT getdate() wykonuje SELECT * FROM [system]. [dbo]. [DBA_alert] maksymalna liczba połączeń może wynosić maksymalnie 700. Timeout zapytania występuje, gdy CPU, IO i MEM mają dużą liczbę zasobów bezczynnych.
W środowisku produkcyjnym nie da się osiągnąć presji 10*1000 wątków, ale SQL będzie bardziej złożony niż środowisko testowe.

Liczba współbieżnaWąskie gardło nie wynika z przepustowości mojego komputera ani karty sieciowej serwera
Aby udowodnić powyższe. Wykonałem następujące testy, np. dbo.run2 w przypadku dużych współbieżności;

ALTER proc [dbo]. [bieg2]
jako
ustaw nocount on
Wybierz getdate()
deklaruj @i int
zestaw @i=0
podczas gdy @i<1000 Gdy ta wartość wynosi 1000, maksymalna liczba połączeń wynosi około 1300, a gdy ta wartość wynosi 10, normalne jest osiągnięcie 5000.
zaczynaj
    INSERT INTO [pubs]. [dbo]. [tb_test] ([name]) wartości (newid())
    zestaw @i=@i+1
koniec

Idź

Liczba cykli zmian nie wpłynie na wynik zwrotu, czyli ciśnienie na ruch kart sieciowych pozostaje takie samo, ale jeden szybko się wygaśnie, a drugi można zawsze sprawdzić, dzięki czemu wpływ przepustowości kart sieciowych po obu stronach może zostać wyeliminowany.


Zawartość błędu, gdy maksymalna liczba połączeń jest zatrzymana:




NetStat – wynik, gdy maksymalna liczba połączeń jest zablokowana (mocno ustalona):





Testuj program uruchamiający schemat, gdy maksymalna liczba połączeń jest zatrzymana:



Warto zauważyć:Połączenie z błędami lub timeoutami nie jest równe i koncentruje się w niektórych procesach, to znaczy, niektóre procesy mogą działać normalnie, a druga część będzie zgłaszać błędy przez długi czas (nie ma to nic wspólnego z kolejnością startu procesów, z tego co rozumiem, niektóre procesy mają zasoby, mogą działać normalnie, podczas gdy inne procesy w wątkach oryginalnych zasobów są wyłączone i nie mogą aplikować o nowe zasoby, będą ciągle zgłaszać błędy). Jak pokazano na powyższym rysunku, drugi i siódmy proces zaczęły mieć dużą liczbę timeoutów, a inne procesy nadal działały. Na serwerze zapytania mogą być niedotknięte lub mniej dotknięte przez niektóre maszyny, a niektóre są znacząco dotknięte.


Wniosek: Chociaż górna granica połączeń użytkownika SQLSERVER jest powiązana z serią warunków, nadal możliwe jest oszacowanie i przewidzenie wąskiego gardła, a gdy ta granica zostanie osiągnięta, pojawi się duża liczba zapytań spowolnionych i czasowych limitów (choć CPU, IO). Ruch MEM może również wystąpić, gdy zasoby są nieużywane). W rzeczywistości zmiana niektórych parametrów TCP zwiększy ten górny limit i być może napiszę suplementy później





Poprzedni:【Projekt przedsiębiorczy】Wuhan Career Worry-Free Technology Co., Ltd. Kierownik rekrutacji kampusu (Wuchang Institute of Technology)
Następny:Konfiguruj Pythona do dostępu do SQLSserver pod Redhat
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com