Zwiększone oczekiwania w punkcie kontrolnym po aktualizacji do lepszej pamięci

9

Kiedy przeprowadziliśmy migrację ze starszej tablicy all flash, do nowszej tablicy all flash (inny, ale dobrze ugruntowany dostawca), zaczęliśmy obserwować zwiększone oczekiwania w SQL Sentry podczas punktów kontrolnych.

Wersja: SQL Server 2012 Sp4

Na naszym starym magazynie nasze oczekiwania wynosiły około 2k z „skokami” do 2500 podczas punktu kontrolnego, przy nowym magazynie skoki zwykle wynoszą 10k, a szczyty zbliżają się do 50k. Sentry wskazuje nam bardziej na PAGEIOLATCHWatis. Przeprowadzając własną analizę, wydaje się, że jest to kombinacja PAGEIOLATCH and PAGELATCHoczekiwań. Używając Perfmon, możemy ogólnie powiedzieć, że im więcej stron sprawdzimy, tym więcej czekamy, ale spłukujemy tylko ~ 125 mb podczas sprawdzania. Naszym obciążeniem jest głównie pisanie (głównie wstawki / aktualizacje).

Dostawca pamięci masowej udowodnił nam, że bezpośrednio podłączona tablica Fibre Channel odpowiada poniżej 1 ms podczas tych zdarzeń w punkcie kontrolnym. HBA potwierdza również numery tablicy. Nie uważamy również, że jest to problem z kolejką HBA, ponieważ głębokość kolejki nigdy nie była większa niż 8. Próbowaliśmy także nowszej karty HBA, zmieniając ustawienia ZIO, przepustnicę wykonania i głębokość kolejki bezskutecznie. Zwiększyliśmy także pamięć serwera z 500 GB do 1 TB bez zmian. Podczas procesu punktu kontrolnego widzimy wzrost 2–4 pojedynczych rdzeni (z 16) do 100%, ale ogólny procesor wynosi około 20%. BIOS jest również ustawiony na wysoką wydajność. Co ciekawe, widzimy, że procesory są na ogół w stanie uśpienia C2, nawet jeśli to wyłączyliśmy, dlatego wciąż badamy, dlaczego stan uśpienia przekracza C1.

Widzimy, że prawie wszystkie oczekiwania są na stronach danych z okazjonalnym PFS typu strony DCM. Oczekiwania są w bazach danych użytkowników, a nie tempdb. Widzimy również, że oczekiwania trwają na kilku stronach danych, a niektóre identyfikatory SPID czekają na tej samej stronie. Projekt bazy danych ma kilka wstawionych hot spotów, ale ten sam projekt był na miejscu ze starą pamięcią.

Uruchamiając pętlę tego zapytania 100 razy, udało nam się złapać, ile SPID czekało na dysku w porównaniu do pamięci

SELECT
    [owt].[wait_type], count(*) as waitcount
FROM sys.dm_os_waiting_tasks [owt]
WHERE [owt].[wait_type] LIKE 'PAGE%'
group by [owt].[wait_type]
order by 1
GO 100

wprowadź opis zdjęcia tutaj

„Miłą” rzeczą jest to, że możemy łatwo odtworzyć problem w naszym środowisku perf, które ma tę samą tablicę modeli i podobne specyfikacje serwerów. Byłbym wdzięczny za wszelkie przemyślenia na temat tego, gdzie jeszcze szukać lub jak zawęzić problem. Obecnie nasze kolejne testy obejmują: nowy serwer z nowszą płytą główną i większą liczbą procesorów; wyłączanie urządzenia do pobierania danych SIOS (mimo że miało to miejsce w przypadku starej pamięci); inna marka HBA.

exec sp_Blitz @outputtype = 'markdown'

Priorytet 5: Niezawodność : - Niebezpieczne moduły stron trzecich - Sophos Limited - Ochrona przed przepełnieniem buforu Sophos - SOPHOS ~ 2.DLL - Zainstalowano moduł podejrzanego niebezpiecznego działania strony trzeciej.

Priorytet 200: Informacyjny : - Węzeł klastra - Jest to węzeł w klastrze. - TraceFlag On - Flaga śledzenia 1117 jest włączona globalnie. - Flaga śledzenia 1118 jest włączona globalnie. - Flaga śledzenia 3226 jest włączona globalnie.

Priorytet 200: Licencjonowanie : - Wykorzystywane funkcje wersji Enterprise * xxxxx - Baza danych [xxxxxx] korzysta z kompresji. Jeśli ta baza danych zostanie przywrócona na serwerze Standard Edition, przywracanie zakończy się niepowodzeniem w wersjach wcześniejszych niż SP1 2016. * xxxxx - baza danych [xxxxxx] korzysta z partycjonowania. Jeśli ta baza danych zostanie przywrócona na serwerze Standard Edition, przywracanie zakończy się niepowodzeniem w wersjach wcześniejszych niż SP1 2016.

Priorytet 240: Statystyki czekania: - Nie wykryto znaczących oczekiwań - Serwer może być po prostu bezczynny lub ktoś niedawno wyczyścił statystyki czekania.

Priorytet 250: Informacje o serwerze: - Sprzęt - Procesory logiczne: 16. Pamięć fizyczna: 512 GB. - Sprzęt - Konfiguracja NUMA - Węzeł: 0 Stan: ONLINE Planiści online: 8 Planiści offline: 0 Grupa procesorów: 0 Węzeł pamięci: 0 Pamięć VAS Zarezerwowany GB: 1177 - Węzeł: 1 Stan: ONLINE Planiści online: 8 Planiści offline: 0 Procesor Grupa: 0 Węzeł pamięci: 1 Zarezerwowany VAS pamięci GB: 0 - Plan zasilania - Twój serwer ma procesory 3,50 GHz i jest w trybie wysokiej wydajności - Ostatnie uruchomienie serwera - 4 lipca 2018 04:56 - Ostatnie uruchomienie serwera SQL - 5 lipca 2018 05:11 - Usługa SQL Server - wersja: 11.0.7462.6. Poziom łaty: SP4. Edition: Enterprise Edition (64-bit). Grupy dostępności włączone: 1. Status Menedżera grup dostępności: 1 - Serwer wirtualny - Typ: (HYPERVISOR) - Wersja systemu Windows - Używasz dość nowoczesnej wersji systemu Windows: era Server 2012R2, wersja 6.3

Priorytet 200: Domyślna konfiguracja serwera: - Agent XPs - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - domyślna kompresja kopii zapasowej - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - zablokowane progi procesowe - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 20. - próg kosztu dla równoległości - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 5 i została ustawiona na 30. - XP bazy danych - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - maksymalny stopień równoległości - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 8. - maksymalna pamięć serwera (MB) - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 2147483647 i została ustawiona na 496640. - Min. Pamięć serwera (MB) - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 8196. - Optymalizuj pod obciążenia ad hoc - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - dostęp zdalny - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 1 i została ustawiona na 0. - połączenia ze zdalnymi administratorami - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - Skanuj w poszukiwaniu procesów uruchamiania - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - pokaż opcje zaawansowane - Ta opcja sp_configure została zmieniona. Jego domyślna wartość to 0 i została ustawiona na 1. - xp_cmdshell - Ta opcja sp_configure została zmieniona.

Doley
źródło
zapomniałem wspomnieć ... SQL 2012 SP4
Doley
Można uruchomić sp_Blitz ze @OutputType = 'MARKDOWN'i po wyniki?
Kin Shah,
Dodałem je do postu (te, które moim zdaniem były przydatne).
Doley
czy wykonałeś ciężkie zadanie we / wy, takie jak odbudowanie dużego indeksu i porównałeś czasy ze starą siecią SAN? Czy to ten sam typ flasha, co stary SAN? Co z układem woluminów i udostępnianiem ich innym aplikacjom lub serwerom?
Alen,
1
Czy masz taki sam poziom separacji między bazą danych, logiem i tempdb w nowej tablicy? Checkpoint zatrzaskuje pliki bazy danych, ale może powodować konflikty z innymi operacjami we / wy na tych dyskach.
David Browne - Microsoft

Odpowiedzi:

1

Hmm Pokazujesz pająki czekające w punkcie kontrolnym, ale nie to, jak długo czekają średnio / łącznie (co, szczerze mówiąc, to wszystko, na czym mi zależy). Wykonaj analizę różnicowych statystyk oczekiwania, aby sprawdzić, czy czas trwania ma znaczenie. Ponadto, jakie dokładnie są dwa oczekiwania na twojej mapie? Jeśli otrzymujesz dużo przydziałów pamięci z 1 TB pamięci RAM w grze, musimy przeprowadzić inną dyskusję. :-RE

Prędkość zapisu 125 MB podczas punktu kontrolnego: czy JUST punkt kontrolny zapisuje, czy WSZYSTKO? Tak czy inaczej, wydaje się niski dla pamięci flash. Czy według testu porównawczego zapisałeś różne wzorce zapisu, a jeśli tak, to jakie liczby otrzymałeś?

TheSQLGuru
źródło
0

Nie jesteśmy pewni, dlaczego zmieniło się zachowanie naszego programu SQL Server (i mamy dowody, że stało się to przed zmianą pamięci), ale włączenie pośrednich punktów kontrolnych dla baz danych użytkowników rozwiązało problem.

Doley
źródło