Czy możesz mi pomóc w planowaniu zdolności?

132

Jest to kanoniczne pytanie dotyczące planowania zdolności

Związane z:

Mam pytanie dotyczące planowania wydajności. Czy społeczność związana z awarią serwera może pomóc w:


  • Jakiego rodzaju serwera potrzebuję do obsługi pewnej liczby użytkowników?
  • Ilu użytkowników może obsłużyć serwer z niektórymi specyfikacjami ?
  • Czy jakaś konfiguracja serwera będzie wystarczająco szybka dla mojego przypadku użycia ?
  • Buduję serwis społecznościowy: jakiego rodzaju sprzętu potrzebuję?
  • Ile przepustowości potrzebuję do jakiegoś projektu ?
  • Ile przepustowości zużyje pewna liczba użytkowników w niektórych aplikacjach ?
voretaq7
źródło

Odpowiedzi:

97

Społeczność Server Fault na ogół nie może ci pomóc w planowaniu pojemności - najlepszą odpowiedzią, jaką możemy zaoferować, jest: „Analiza porównawcza kodu na sprzęcie podobnym do tego, którego będziesz używać w produkcji, identyfikacja wszelkich wąskich gardeł, a następnie określenie, ile obciążenia obecny sprzęt może obsłużyć i / lub ile mocy sprzętowej potrzebujesz do obsługi docelowego obciążenia pracą " .


W planowaniu wydajności bierze udział wiele czynników, których nie możemy odpowiednio ocenić na stronie pytań i odpowiedzi:

  • Wymagania Twojego konkretnego kodu / oprogramowania
  • Zasoby zewnętrzne (bazy danych, inne oprogramowanie / witryny / serwery)
  • Twoje obciążenie pracą (szczyt, średnia, kolejkowanie)
  • Wartość biznesowa wydajności (analiza kosztów / korzyści)
  • Oczekiwania dotyczące wydajności użytkowników
  • Wszelkie umowy dotyczące poziomu usług / zobowiązania umowne, które możesz mieć

Właściwa analiza tych i innych czynników wykracza poza zakres prostej witryny z pytaniami i odpowiedziami: wymagają one szczegółowej wiedzy na temat środowiska i wymagań, które tylko Twój zespół (lub odpowiednio wynagrodzony konsultant) może skutecznie zebrać.


Niektóre aksjomaty planowania wydajności

  1. Pamięć RAM jest tania
    Jeśli oczekujesz, że aplikacja zużyje dużo pamięci RAM, powinieneś włożyć tyle pamięci RAM, ile możesz sobie pozwolić / zmieścić.
  2. Dysk jest tani
    Jeśli spodziewasz się dużej ilości dysku, powinieneś kupić duże dyski - wiele z nich.
    Pamięć masowa SAN / NAS jest tańsza i zwykle powinna być raczej duża niż mała, aby uniknąć późniejszych kosztownych aktualizacji.
  3. Obciążenia rosną z czasem
    Załóżmy, że Twoje potrzeby w zakresie zasobów wzrosną.
    Pamiętaj, że wzrost może nie być symetryczny (procesor i pamięć RAM mogą rosnąć szybciej niż dysk) i może nie być liniowy.
  4. Energia elektryczna jest droga
    Mimo że ceny pamięci RAM i dysków znacznie spadły, koszty energii elektrycznej stale rosną. Wszystkie te dodatkowe dyski i pamięć RAM, nie wspominając o mocy procesora, zwiększą rachunki za prąd (lub rachunki płacone dostawcy). Zaplanuj odpowiednio.
voretaq7
źródło
1
Powinieneś całkowicie to porzucić i zastosować integrację częściową!
Gilles
+1. A pamięć RAM, jak sugerujesz w aksjomacie nr 1, jest jedną z tych rzeczy, która ma ogromne zalety. Na przykład zwiększa twoją zdolność lepszego wykorzystania buforowania, co z kolei pozwala na mniej zapytań do bazy danych, co z kolei zmniejsza obciążenie dysku i procesora. Często denerwują mnie dostawcy hostingu, którzy oferują szybki procesor ze swoimi serwerami i minimalną ilość pamięci RAM.
Steve Wortham
31
Dodam do tego: pojemność dysku jest tania. Wydajność dysku staje się droga. Zwłaszcza, że ​​widzimy wzrost rozmiarów dysków w ciągu 10 lat, ale prawa fizyki się nie zmieniły. Stosuję ogólną zasadę (na dzień dzisiejszy; czerwiec 2014): optymalną wydajność: 75 IOP na wrzeciono w SATA, 200 IOP na wrzeciono w FC i 1500 IOP na SSD. Duże dyski SATA dają naprawdę dość słabe współczynniki IO na gigabajt.
Sobrique
W połowie 2019 roku nikt nie powinien już kupować napędów wrzecion.
Robert Harvey
@RobertHarvey nikt nie powinien już kupować napędów wrzecion SAS . Uzyskanie pojemności serwerów w skali petabox wciąż wymaga zdobycia dużej ilości dysków SATA, w przeciwnym razie zapłacisz dużo.
Mikko Rantalainen
44

Planowanie liczby maszyn wirtualnych

Jeśli chodzi o ustalenie liczby maszyn wirtualnych, które należy zaplanować na jednym hoście, w rzeczywistości nie ma naprawdę dobrych reguł. W rzeczywistości jest tylko jeden i jest to tylko rodzaj dobra:

Liczby maszyn wirtualnych są zwykle ograniczone przez pamięć RAM, z wyjątkiem sytuacji, gdy nie są.

Co nie jest strasznie pomocne. Jeśli na tych maszynach wirtualnych będą działały aplikacje o niskim procesorze, ogranicznik będzie oparty na pamięci RAM. Każda platforma VM ma własne możliwości nadsubskrybowania pamięci RAM, więc nie jest to tak łatwe, jak TOTAL_RAM / Per-VM-RAM = MachineCount, ale ta liczba jest dobrym elementem planowania.

Ale co, jeśli twoje maszyny wirtualne robią rzeczy poza procesem pakietów o niskim CPU?


Liczba maszyn wirtualnych jest ograniczona przez siedem dyskretnych zasobów dostępnych dla maszyny hosta:

  • Hypervisor VMware, Xen, HyperV, KVM, cokolwiek. Każda z nich ma swoje własne, wpływające na liczbę funkcji. Niektóre z nich są bardzo dobre w deduplikacji strony pamięci, inne nie aż tak bardzo. Niektóre nie zezwalają na nadmierną subskrypcję mocy procesora, niektóre zezwalają.
  • Szybkość rdzenia procesora Ogranicza to maksymalną wydajność jednowątkową, jaką VM będzie mogła uruchomić. 36 rdzeni procesora 1,8 GHz może stanowić 64,8 GHz procesora na hoście, ale żaden wątek nie będzie działał szybciej niż 1,8 GHz.
  • Liczba rdzeni procesora To, wraz z szybkością rdzenia, opisuje maksymalną możliwą wydajność procesora.
  • System RAM Jak opisano powyżej, ogranicza to liczbę maszyn wirtualnych, które można uruchomić. Niektóre hiperwizory są lepsze od innych w takich sprawach, jak deduplikacja strony pamięci, więc jeśli używasz 100 identycznych maszyn wirtualnych, możesz spakować ich znacznie więcej w takich systemach do deduplikacji, niż gdybyś miał 100 całkowicie różnych maszyn wirtualnych.
  • Rozmiar dysku Każdy obraz systemu operacyjnego zajmuje pewną ilość miejsca. Potrzebujesz wystarczającej ilości miejsca do przechowywania tego wszystkiego. Dlatego rozmiar dysku nakłada górną granicę liczby maszyn wirtualnych, które można hostować.
  • Przepustowość we / wy Dysk leżący u podstaw maszyn wirtualnych ma maksymalną liczbę obsługiwanych operacji we / wy na sekundę. Jeśli rzucisz w to zbyt wiele, systemy zaczną działać, czekając na zakończenie operacji we / wy. Nakłada to górną granicę liczby maszyn wirtualnych we / wy, które można uruchomić.
  • Przepustowość sieci W przypadku maszyn wirtualnych korzystających z sieci dostępna przepustowość sieci określa górną granicę liczby maszyn wirtualnych, które można uruchomić na danym hoście.

Wszystko to może się potknąć, wszystko zależy od tego, co robisz z maszynami wirtualnymi. Kilka rzeczy do zapamiętania:

  • Nie ma czegoś takiego jak system ogólny.
  • Nie ma czegoś takiego jak ogólny serwer WWW , ponieważ kod aplikacji może być uruchamiany od serwowania CDN w stylu ledwo poruszających się igieł , po duże, głębokie cracky, takie jak transkodowanie wideo.
  • Nie ma czegoś takiego jak ogólny serwer bazy danych . Mogą one działać od małych systemów używanych tylko do śledzenia stanu sesji, do bardzo dużych.

Aby dowiedzieć się, ile maszyn wirtualnych można spakować do systemu hosta, musisz wiedzieć, jak działają twoje systemy i czego potrzebują, aby dobrze działać. Kiedy już to wiesz, możesz wykonać planowanie. A jeszcze lepiej, dowiedz się, jak potężny jest Twój system gospodarza!

sysadmin1138
źródło
przede wszystkim używaj systemów opartych na VM na dwóch osobnych serwerach fizycznych z niezwiązanymi VM. pozwala to na awarię sprzętu bez utraty całego systemu. Maszyny wirtualne mogą przenosić się między identycznymi serwerami bez utraty danych. tylko sesje gubią się, a następnie są odbudowywane. osobiście zleciłbym outsourcing firmie hostingowej, która oferuje te usługi (google lub amazon). są drogie, ale o wiele mniej niż prowadzenie własnego.
Random-IT,
2
To, co najczęściej widziałem niewymiarowe w implementacjach maszyn wirtualnych, to dyskowe operacje we / wy. Większość ludzi rozumie miejsce na dysku, szybkość procesora i pamięć. Zapominają o wydajności tego dysku.
Dan Pritts,
6

Upewnij się, że zadajesz właściwe pytanie.

  • Komputery są tanie
  • Przyszłe potrzeby są bardzo trudne do przewidzenia
  • Zaplanuj, jak skalować, a nie co kupić z wyprzedzeniem

Jeśli nie wiesz, czego będziesz potrzebować, oznacza to, że nie potrzebujesz zbyt wiele. Jeśli masz gorącą stronę internetową, prawdopodobnie masz również zespół operacyjny, który wie, ile pamięci RAM, dysku, sieci, sieci itp. Potrzebuje Twoja aplikacja. Jeśli jesteś w fazie marzeń, powinieneś zacząć od pulpitu i rozwijać się.

Upewnij się, że masz pomysł, jak skalować, gdy rzeczy stają się większe. Czy możesz dodać więcej serwerów za modułem równoważenia obciążenia? Czy możesz oddzielić serwer Redis?

Również posiadanie własnego centrum danych jest do bani. Centrum danych (nawet jeśli jest to tylko jeden komputer) odwraca uwagę od twojego rzeczywistego celu. Nie możesz po prostu kupić komputera, włączyć go i odejść. Potrzebujesz klimatyzacji, filtracji powietrza, niezawodnego zasilania, niezawodnego internetu, kopii zapasowych, części zamiennych, fizycznego pomieszczenia do wzrostu, mocy do wzrostu, kabli, które się nie potkną, i wielu innych problemów.

Dylan Martin
źródło