Krótka odpowiedź brzmi: nikt oprócz ciebie nie może odpowiedzieć na to pytanie.
Długa odpowiedź brzmi: analiza porównawcza konkretnego obciążenia jest czymś, co musisz podjąć samodzielnie, ponieważ przypomina to pytanie „Jak długi jest kawałek sznurka?”.
Prosta, jednostronicowa strona statyczna mogłaby być hostowana na Pentium Pro 150 i nadal dostarczać tysiące wyświetleń każdego dnia.
Podstawowym podejściem, jakie należy podjąć, aby odpowiedzieć na to pytanie, jest wypróbowanie go i zobaczenie, co się stanie. Istnieje wiele narzędzi, za pomocą których można sztucznie wywierać nacisk na system i sprawdzać, gdzie się zapadnie.
Krótki przegląd tego jest następujący:
- Umieść swój scenariusz na miejscu
- Dodaj monitorowanie
- Dodaj ruch
- Oceń wyniki
- Rozwiązanie w oparciu o wyniki
- Spłucz, powtarzaj, aż będzie wystarczająco szczęśliwy
Umieść swój scenariusz na miejscu
Zasadniczo, aby przetestować niektóre obciążenia, potrzebujesz czegoś do przetestowania. Skonfiguruj środowisko do testowania. Jeśli to możliwe, powinno to być dość dokładne przypuszczenie do twojego sprzętu produkcyjnego, w przeciwnym razie zostaniesz ekstrapolowany.
Skonfiguruj serwery, konta, strony internetowe, przepustowość itp. Nawet jeśli robisz to na maszynach wirtualnych, jest to OK, o ile jesteś przygotowany do skalowania wyników.
Zamierzam więc skonfigurować maszynę wirtualną o średniej mocy (dwa rdzenie, 512 MB pamięci RAM, 4 GB HDD) i zainstalować mój ulubiony moduł równoważenia obciążenia haproxy
w Red Hat Linux na maszynie wirtualnej.
Będę również mieć dwa serwery WWW za modułem równoważenia obciążenia, którego użyję do przetestowania modułu równoważenia obciążenia. Te dwa serwery są skonfigurowane identycznie jak moje systemy na żywo.
Dodaj monitorowanie
Będziesz potrzebować kilku wskaźników do monitorowania, więc zmierzę, ile żądań dociera do moich serwerów internetowych i ile żądań mogę wycisnąć na sekundę, zanim użytkownicy zaczną otrzymywać czas odpowiedzi powyżej dwóch sekund.
Zamierzam również monitorować użycie pamięci RAM, procesora i dysku w haproxy
instancji, aby upewnić się, że moduł równoważenia obciążenia może obsłużyć połączenia.
Jak to zrobić, wiele zależy od twoich platform i jest poza zakresem tej odpowiedzi. Konieczne może być przejrzenie plików dziennika serwera WWW, uruchomienie liczników wydajności lub poleganie na zdolności raportowania narzędzia do testów warunków skrajnych.
Kilka rzeczy, które zawsze chcesz monitorować:
- użycie procesora
- Wykorzystanie pamięci RAM
- Użycie dysku
- Opóźnienie dysku
- Wykorzystanie sieci
Możesz także spojrzeć na zakleszczenia SQL, czasy wyszukiwania itp. W zależności od tego, co konkretnie testujesz.
Dodaj ruch
To tam rzeczy się bawią. Teraz musisz zasymulować obciążenie testowe. Istnieje wiele narzędzi, które mogą to zrobić, z konfigurowalnymi opcjami:
Wybierz liczbę, dowolną liczbę. Powiedzmy, że zobaczysz, jak system reaguje z 10 000 trafień na minutę. Nie ma znaczenia, którą liczbę wybierzesz, ponieważ będziesz powtarzać ten krok wiele razy, dostosowując tę liczbę w górę lub w dół, aby zobaczyć, jak zareaguje system.
Najlepiej byłoby rozdzielić te 10 000 żądań na wiele klientów / węzłów testujących obciążenie, aby pojedynczy klient nie stał się wąskim gardłem żądań. Na przykład Zdalne testowanie JMeter zapewnia centralny interfejs, z którego można uruchomić kilku klientów ze sterującej maszyny Jmeter.
Naciśnij magiczny przycisk Go i obserwuj, jak twoje serwery WWW topnieją i ulegają awarii.
Oceń wyniki
Więc teraz powróć do swoich danych zebranych w kroku 2. Widzisz, że przy 10 000 równoczesnych połączeniach Twoje urządzenie haproxy
prawie nie poci się, ale czas reakcji z dwoma serwerami sieciowymi to dotknięcie ponad pięciu sekund. To nie jest fajne - pamiętaj, że twój czas reakcji zmierza do dwóch sekund. Musimy więc wprowadzić pewne zmiany.
Remediate
Teraz musisz przyspieszyć swoją witrynę ponad dwukrotnie. Więc wiesz, że musisz albo zwiększyć lub zmniejszyć.
Aby zwiększyć skalę, uzyskaj większe serwery internetowe, więcej pamięci RAM, szybsze dyski.
Aby skalować, zdobądź więcej serwerów.
Skorzystaj z danych z kroku 2 i testów, aby podjąć tę decyzję. Na przykład, jeśli zauważyłeś, że opóźnienie dysku było ogromne podczas testowania, wiesz, że musisz zwiększyć skalę i uzyskać szybsze dyski twarde.
Jeśli zauważyłeś, że procesor siedział na 100% podczas testu, być może musisz skalować, aby dodać dodatkowe serwery WWW, aby zmniejszyć presję na istniejące serwery.
Nie ma ogólnej dobrej lub złej odpowiedzi, jest tylko to, co jest dla ciebie odpowiednie. Spróbuj zwiększyć skalę, a jeśli to nie zadziała, zamiast tego skaluj. Lub nie, to zależy od ciebie i trochę myślenia poza schematem.
Powiedzmy, że skalujemy się. Postanowiłem więc sklonować moje dwa serwery sieciowe (są to maszyny wirtualne), a teraz mam cztery serwery internetowe.
Spłucz, powtórz
Zacznij ponownie od kroku 3. Jeśli okaże się, że nie wszystko idzie zgodnie z oczekiwaniami (na przykład podwoiliśmy serwery internetowe, ale czasy odpowiedzi wciąż przekraczają dwie sekundy), sprawdź inne wąskie gardła. Na przykład podwoiłeś serwery WWW, ale nadal masz kiepski serwer bazy danych. Lub sklonowałeś więcej maszyn wirtualnych, ale ponieważ znajdują się one na tym samym hoście fizycznym, osiągnąłeś wyższy poziom rywalizacji o zasoby serwerów.
Następnie możesz użyć tej procedury do przetestowania innych części systemu. Zamiast uderzać w moduł równoważenia obciążenia, spróbuj uderzyć bezpośrednio w serwer WWW lub serwer SQL za pomocą narzędzia do testowania SQL .