| Termin | Definicja |
|---|---|
| Maksymalna liczba połączeń | Maksymalna liczba połączeń to ustawienie SQL Server ograniczające liczbę jednoczesnych sesji klientów. Co oznacza maksymalna liczba połączeń w SQL ServerMaksymalna liczba połączeń w SQL Server jest wartością konfiguracyjną określającą limit jednoczesnych połączeń użytkowników z instancją silnika bazy danych. Połączenie może pochodzić między innymi z aplikacji, narzędzia administracyjnego, usługi systemowej albo skryptu wykorzystującego sterownik SQL Server. Limit dotyczy całej instancji, a nie pojedynczej bazy danych znajdującej się na tej instancji. Wszystkie aktywne i utrzymywane przez klienta sesje konkurują więc o wspólną pulę dopuszczonych połączeń. W SQL Server ustawienie nosi nazwę Sprawdzanie wartości i konfiguracja parametruBieżącą konfigurację można sprawdzić w SQL Server Management Studio albo w innym kliencie T-SQL. Przykładowe zapytanie odczytuje wartość skonfigurowaną oraz wartość używaną przez uruchomiony silnik:
Wartość Zmiana limitu a zachowanie aplikacjiParametr można zmienić procedurą systemową
Podana liczba jest przykładowa i nie powinna być kopiowana bez analizy środowiska. Ustawienie zbyt niskiego limitu może powodować odrzucanie nowych prób logowania, gdy wszystkie dostępne miejsca zostaną zajęte. Aplikacja może wtedy zgłaszać błędy otwierania sesji, przekroczenia czasu oczekiwania albo brak dostępnych połączeń w puli. Zbyt wysoka wartość również nie rozwiązuje problemu nieefektywnego kodu. Każde połączenie zużywa zasoby serwera, a wiele aktywnych zapytań może prowadzić do presji pamięci, oczekiwania na wątki, blokad i wydłużenia czasu odpowiedzi. W praktyce aplikacje powinny korzystać z puli połączeń, zamykać lub zwalniać obiekty po zakończeniu pracy i unikać tworzenia nowej sesji dla każdej pojedynczej operacji, jeżeli używany sterownik obsługuje ponowne wykorzystanie połączeń. Przy diagnozowaniu problemu warto rozróżnić połączenia faktycznie wykonujące zapytania od sesji bezczynnych, które pozostają otwarte przez błędną obsługę puli albo nieprawidłowe zarządzanie cyklem życia klienta. Zwiększenie limitu ma sens dopiero po ustaleniu, czy ograniczeniem jest rzeczywiście liczba połączeń, a nie blokady, wolne zapytania, brak zasobów lub awaria aplikacji. Diagnostyka przekroczenia liczby połączeńJeżeli SQL Server odrzuca nowe sesje, należy sprawdzić liczbę istniejących połączeń oraz ich stan. Informacje o sesjach można analizować przez widoki dynamicznego zarządzania, na przykład
Do pełnej analizy potrzebne są także dane o użytkowniku, aplikacji, hoście, czasie ostatniego żądania i aktualnie wykonywanym poleceniu. Powtarzające się sesje bezczynne z tego samego programu mogą wskazywać na niewłaściwe ustawienie puli połączeń. Z kolei wiele sesji aktywnych jednocześnie może być prawidłowym skutkiem pracy aplikacji, ale wymaga oceny zapytań i czasu ich wykonywania. Samo zabijanie sesji poleceniem Przed zmianą konfiguracji należy wykonać kopię bieżących ustawień, sprawdzić uprawnienia administracyjne i zaplanować obserwację po zmianie. Warto porównać liczbę połączeń z licznikami wydajności, logami aplikacji oraz czasem odpowiedzi zapytań. Jeżeli problem pojawia się po restarcie usługi, wdrożeniu nowej wersji programu albo zmianie konfiguracji puli, przyczyna może znajdować się poza samym parametrem SQL Server. Diagnostyka powinna więc obejmować cały przepływ: otwarcie sesji przez klienta, uwierzytelnienie, wykorzystanie połączenia, zwolnienie go do puli i ponowne użycie. |