Obecnie mamy maszynę wirtualną, która jest bardzo słaba i proponuje przejście na maszynę wirtualną platformy Azure o lepszych specyfikacjach. Problem polega na tym, że maszyna wirtualna Azure jest znacznie wolniejsza niż oryginalna maszyna wirtualna, nawet jeśli ma wyższą specyfikację.
Oryginalny serwer to 2-rdzeniowa maszyna wirtualna z 2 GB pamięci, która jest także serwerem sieciowym. Działa pod kontrolą Microsoft SQL Server Web Edition 2008 R2, a ponieważ ten serwer jest używany do innych celów, musieliśmy ograniczyć maksymalną pamięć serwera SQL Server do 512 MB .
Nowy serwer to 4-rdzeniowa maszyna wirtualna z 7 GB pamięci, która jest tylko serwerem bazy danych. Działa z Microsoft SQL Server Standard Edition 2008 R2 i nie ograniczyliśmy ilości pamięci, z której może korzystać SQL Server.
Jest to jeden z dwóch serwerów skonfigurowanych w środowisku dublowanym, ale baza danych, na której uruchamiam testy, nie jest dublowana. Inne bazy danych na tym serwerze nie mają obecnie dużego ruchu (w rzeczywistości Monitor aktywności nie pokazuje żadnej aktywności na innych bazach danych podczas wykonywania tych testów).
Zdaję sobie sprawę, że problem z maszynami wirtualnymi platformy Azure polega na tym, że dyski twarde są zasobem sieciowym, więc byłoby to przyczyną spowolnienia, ale nadal jest wolniejsze, nawet jeśli w statystykach We / Wy jest 0 fizycznych odczytów.
Postępowałem zgodnie ze wskazówkami dotyczącymi tuningu na tej maszynie wirtualnej platformy Azure, w tym rozłożeniem dysków (dwa dyski na dysk) i umieszczeniem plików dziennika i danych na osobnych dyskach.
Jedyne rzeczy, których nie zrobiłem, to włączenie kompresji strony, ograniczenie automatycznego powiększania bazy danych i przeniesienie dziennika błędów serwera SQL i śledzenie katalogów plików na dyski danych. Nie zrobiłem tego też na starszym serwerze.
Stary serwer nie wykonał tego strojenia, a pliki dziennika i danych znajdują się na tym samym dysku, który nie jest rozłożony.
Baza danych na bieżącym serwerze ma 65 GB (45 danych i 20 logów), co było trochę za duże, aby przenieść je na nowy serwer, więc testuję na mniejszej DB (6 danych i 13,5 logu)
Wyniki na starym serwerze są, CPU time = 1311 ms, elapsed time = 1057 ms.
a na nowym są CPU time = 1281 ms, elapsed time = 2525 ms.
to tylko jedno uruchomienie, ale wyniki są reprezentatywne dla tego, co zwykle widzę.
Wydaje się, że nowy serwer ciągle ma upływający czas znacznie dłuższy niż czas procesora. Czy to problem i czy mogę coś zrobić, aby znaleźć przyczynę?
Jakie inne kroki mogę podjąć, aby dowiedzieć się, dlaczego ten serwer działa tak wolno, gdy wygląda na to, że powinien być szybszy niż stary serwer?
źródło
Odpowiedzi:
Co warte jest, zakończyłem zmianę maszyny wirtualnej na platformie Azure z typu A na typ D, a następnie podłączenie innego dysku i przeniesienie TEMPDB na ten dysk. Tak więc moją ostatnią maszyną wirtualną jest teraz D2 Standard z 7 GB pamięci RAM i trzema dyskami danych, jeden dla plików MDF, drugi dla plików LDF i nowy dysk TEMPDB.
Zrezygnowałem z próby zrozumienia z A3 niektórych rzeczy, o których wspomniałeś, i po prostu zaktualizowałem maszynę wirtualną. Przeszedłem nawet z A2 na A3 i chociaż znalazłem pewne ulepszenia, ostatecznie zmieniłem się na maszynę wirtualną D2.
W podanym dokumencie Microsoft zaleca D3 dla Enterprise Edition lub D2 dla Web lub Standard Edition oraz korzystanie z Premium Storage, między innymi na liście kontrolnej na początku dokumentu.
źródło