Mamy produkcyjny serwer DB na SQL 2005. Wszystko działa normalnie przez chwilę, ale po kilku tygodniach zauważamy znaczny spadek wydajności. Tylko ponowne uruchomienie programu SQL Server przywraca normalną wydajność.
Trochę tła:
- Uruchamianie ponad 1200 baz danych (głównie jeden dzierżawca, część wielu dzierżawców). Zanim ktokolwiek wygłosi wykład na temat przejścia tylko do wielu dzierżawców, istnieją ważne powody, aby utrzymać tę strukturę ......
- Pamięć RAM wynosi 16 GB. Po ponownym uruchomieniu SQL Server nie wraca do użycia 15 GB.
- Aktywne połączenia DB to około 80 połączeń - co naszym zdaniem jest dość zdrowe, biorąc pod uwagę, że istnieje jedna pula połączeń na serwer WWW na proces - więc nie mamy problemu z wyciekiem połączenia.
Próbowaliśmy kilku rzeczy w godzinach poza szczytem: - Uruchom DBCC DROPCLEANBUFFERS (z PUNKTEM KONTROLNYM), aby wyczyścić pamięć podręczną danych. Nie ma to żadnego wpływu, ani nie usuwa zużycia pamięci RAM). - Uruchom FREEPROCCACHE i FREESYSTEMCACHE, aby wyczyścić plany zapytań i przechowywaną pamięć podręczną proc. Bez efektu.
Oczywiście ponowne uruchomienie programu SQL Server nie jest idealne w aktywnym środowisku produkcyjnym. Coś nam brakuje. Ktoś jeszcze przez to przechodzi?
AKTUALIZACJA: 28 kwietnia 2012 r. Nadal walczę z tym problemem. Obniżyłem pamięć SQL Server do 10 GB, aby wykluczyć wszelkie spory z systemem operacyjnym. Zbliżam się do zawężenia go, ale potrzebuję pomocy od następnego kroku.
Oto, co znalazłem, po ponownym uruchomieniu programu SQL Server, plik strony waha się między 12,3 GB a 12,5 GB. Tak pozostanie na wiele dni. Łączna liczba wątków serwera zawiesi się między 850 a 930 - również stabilna i spójna przez wiele dni (serwer sqlser stale ma od 55 do 85 z nich w zależności od ruchu).
Potem jest „wydarzenie”. Nie mam pojęcia, co to za wydarzenie, nie widzę tego w dziennikach i nie widzę niczego spójnego w dniu tygodnia lub o godzinie, w której się ono zdarza, ale cały przypadkowy plik strony przeskakuje do 14.1 lub 14.2 GB, a wątki skaczą między 1750 a 1785.
Sprawdzając perfom, kiedy to się dzieje, ponad 900 tych wątków to serwer sqlserver. Więc idę do sp_who2, aby zobaczyć, skąd pochodzą te wątki ... a tam jest tylko używane około 80 połączeń db.
Więc ... czy ktoś ma jakieś pomysły, jak zlokalizować resztę tych 900 wątków na serwerze SQL i co robią?
AKTUALIZACJA: 01 czerwca 2012 Nadal walczę z tym problemem. Dla każdego, kto to czyta, problem z przeskakiwaniem wątków został rozwiązany. Było to spowodowane automatycznym oprogramowaniem do tworzenia kopii zapasowych ComVault. Tworzył wątek próbujący wykonać kopię zapasową baz danych, których już tam nie było (utrzymywał listę wcześniejszych baz danych), a nie tylko tworzyć kopie zapasowe bieżących baz danych.
Ale - problem nadal występuje i musimy restartować co tydzień, dać lub zająć kilka dni. Praca z zespołem Rackspace, aby sprawdzić, czy mogą rzucić jakieś światło.