Zmierzyłem maksymalną liczbę serwerów WEB/AP (Apache i Tomcat), jaką może obsłużyć w tym samym czasie serwer wynajęty na VPS.
Data publikacji:1 stycznia 2021 r.
INFOMARTION > Zmierzyłem maksymalną liczbę serwerów WEB/AP (Apache i Tomcat), jaką może obsłużyć w tym samym czasie serwer wynajęty na VPS.
Przegląd.
Zmierzyłem maksymalną liczbę przypadków, które serwery WEB/AP (Apache i Tomcat) mogą przetwarzać w tym samym czasie, i chciałbym opisać wyniki. Byliśmy ciekawi, jaką maksymalną liczbę żądań można obsłużyć, więc przeprowadziliśmy ankietę. Użyj tego dokumentu jako punktu odniesienia przy wyborze specyfikacji serwera VPS.
Tym razem pomiary zostały przeprowadzone na serwerach WEB/AP (Apache i Tomcat), ale o pomiarach tylko na WEB (Apache) można przeczytać w poniższym artykule.
Spis treści
1. pomiar
1-1. Środowisko pomiarowe
Poniżej przedstawiono środowisko, w którym będą przeprowadzane pomiary.
■Informacje o serwerze wynajmu
CPU | 2core |
---|---|
memory | 1GB |
SSD | 50GB |
■Informacje o serwerze
OS | CentOS 7.4 64bit |
---|---|
Serwer WWW | Apache HTTP Server 2.4.41 |
Serwer AP | Apache Tomcat 9.0.27 |
Serwer DB | PostgreSQL 10.2 |
Java | OpenJDK 11 |
1-2. Metoda pomiarowa
Chciałbym to zmierzyć za pomocą programu JMeter. JMeter to narzędzie do pomiaru obciążenia, które działa w języku Java. Narzędzie to umożliwia jednoczesne rzucanie dużej liczby żądań. Chcielibyśmy stopniowo zwiększać liczbę jednoczesnych żądań za pomocą programu JMeter i zwiększać obciążenie do momentu, gdy nie będzie można już obsłużyć przetwarzania.
Do warunków szczególnych należą.
- odstęp czasu・・・5 sek.
- Liczba jednoczesnych żądań・・・10 przypadków.(Pomiary stopniowo zwiększano o 10 przypadków.)
- Czas pomiaru・・・60 sekund.
Czas pomiaru wynosi "60 sekund", a interwał żądania "5 sekund", więc użytkownik chce uzyskać dostęp do systemu 12 razy (60÷5).
1-3. wynik pomiaru
W końcu wiele osób interesuje się tym, jakie specyfikacje może obsługiwać serwer i jak wiele może obsłużyć, dlatego chciałbym najpierw przedstawić wnioski.
CPU:2core memory:1GB SSD:50GB | Możliwość jednoczesnego przetwarzania do 80 wniosków |
---|
Wyniki tego pomiaru wykazały, że. Z powyższych wyników można wywnioskować, co następuje. Postaraj się wykorzystać to jako kryterium przy wyborze specyfikacji serwera.
CPU:1core memory:512MB SSD:25GB | Jednocześnie może być przetwarzanych do 20 wniosków. |
---|---|
CPU:2core memory:1GB SSD:50GB | Możliwość jednoczesnego przetwarzania do 80 wniosków |
CPU:3core memory:2GB SSD:100GB | Jednocześnie może być przetwarzanych do 200 wniosków. |
Stwierdzono, że system o wielkości około 20 użytkowników będzie działał bez problemów przy ustawieniach "CPU: 1core", "memory: 512MB" i "SSD: 25GB".
2. Szczegółowe informacje o wynikach pomiarów
Wyniki pomiarów opisaliśmy wcześniej, ale jeśli jesteś zainteresowany tym, jakie wyniki opisaliśmy, sprawdź również szczegóły dotyczące wyników pomiarów, które zostaną opisane w przyszłości.
2-1. Pomiary serwera WEB/AP (Apache, Tomcat)
Żądanie to zostało rzucone w scenariuszu, w którym użytkownik loguje się z ekranu logowania, a po zalogowaniu wyświetlany jest ekran listy. Nawiasem mówiąc, ekran jest zbudowany przy użyciu frameworka Spring, w tym funkcji uwierzytelniania.
Pomiary dały następujące wyniki.
- Dla 10 jednoczesnych zgłoszeń⇒OK
- Dla 20 jednoczesnych zgłoszeń⇒OK
- Dla 30 jednoczesnych zgłoszeń⇒OK
- Dla 40 jednoczesnych zgłoszeń⇒OK
- Dla 50 jednoczesnych zgłoszeń⇒OK
- Dla 60 jednoczesnych zgłoszeń⇒OK
- Dla 70 jednoczesnych zgłoszeń⇒OK
- Dla 80 jednoczesnych zgłoszeń⇒OK
- Dla 90 jednoczesnych zgłoszeń⇒NG
Błąd wystąpił w 90. przypadku. Przyczyną był błąd połączenia z serwerem Apache. Stan serwera w tym czasie był następujący.
- Wykorzystanie procesora・・・26%
- wykorzystanie pamięci・・・100%
Wąskim gardłem był zupełny brak pamięci.
Dla nieco bardziej zaawansowanych, konfiguracja modułu wieloprocesorowego Apache (MPM) jest następująca. MPM to po prostu ustawienie, jak dużo Apache może przetwarzać równolegle.
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
Interesującym ustawieniem jest "250" dla opcji "MaxRequestWorkers". Jest to ustawienie określające maksymalną liczbę spraw, które Apache może przetwarzać w tym samym czasie. 250", więc maksymalnie równolegle można było przetworzyć 250 spraw, ale patrząc na wykorzystanie pamięci, na jedną sprawę przypadało około 8 MB pamięci.
Wydawało się, że Java zużywa 320 MB pamięci (248M na stertę i 72M na metaspace), a Apache 640 MB pamięci (8M x 80 procesów), i chociaż wartość ustawienia MPM Apache'a wynosi "250", wydawało się, że nie może on utworzyć więcej niż "80" procesów.
※Serwer ma 1G pamięci, więc całkowita ilość pamięci dla Apache'a i Javy wynosi 960MB, czyli prawie tyle, ile wynosi górna granica.
Serwer AP (po stronie Javy) działał prawidłowo, więc wąskim gardłem był serwer WEB (Apache).
Po zainstalowaniu i uruchomieniu Apache'a i Tomcata okazało się, że przy specyfikacji "CPU: 2core, memory: 1GB, SSD: 50GB" limitem jest liczba jednoczesnych dostępów "80".(Zakłada się, że ustawienia pamięci dla środowiska Java wynoszą 248M dla sterty i 72M dla metasprzętu.)
2-2. rozważania
Ponieważ wąskim gardłem jest pamięć, jeśli zostanie ona zmieniona, wzrośnie liczba procesów, które mogą być przetwarzane współbieżnie.
【Obecny.(memory1GB)】
- memory:1GB
- Liczba wątków Apache:80 przypadków.
- Zużycie pamięci na wątek w Apache.:8MB
- Zużycie pamięci przez Apache:640MB(80 przypadków.×8MB)
- Zużycie pamięci przez Tomcat:320MB(248 mln euro na program HEAP.、72 m dla metasfery.)
- Zużycie pamięci przez Apache+Tomcat:960MB
【po zmianie(memory2GB)】
- memory:2GB
- Liczba wątków Apache:200 przypadków
- Zużycie pamięci na wątek w Apache.:8MB
- Zużycie pamięci przez Apache:1600MB(200 przypadków×8MB)
- Zużycie pamięci przez Tomcat:320MB(248 mln euro na program HEAP.、72 m dla metasfery.)
- Zużycie pamięci przez Apache+Tomcat:1920MB
Przy 2 GB pamięci może być możliwe jednoczesne przetwarzanie 200 spraw. Jeśli pamięć zostanie zwiększona do 3GB, wydaje się, że można wykonać więcej równoczesnego przetwarzania, ale "MaxRequestWorkers (maksymalna liczba spraw przetwarzanych współbieżnie)" w MPM Apache'a wynosi "250", więc dostosowanie tego parametru będzie również konieczne, jeśli pamięć zostanie zwiększona. Może być również wymagane dostrojenie pamięci Java. I odwrotnie, jeśli pamięć zostanie zmniejszona o połowę, będzie to wyglądało następująco.
【po zmianie(memory512GB)】
- memory:512GB
- Liczba wątków Apache:20 przypadków
- Zużycie pamięci na wątek w Apache.:8MB
- Zużycie pamięci przez Apache:160MB(20 przypadków×8MB)
- Zużycie pamięci przez Tomcat:320MB(248 mln euro na program HEAP.、72 m dla metasfery.)
- Zużycie pamięci przez Apache+Tomcat:480MB
3. streszczenie
Opisano wyniki pomiaru maksymalnej liczby przypadków, które serwery WEB/AP (Apache i Tomcat) mogą przetwarzać w tym samym czasie. Stwierdzono, że system o wielkości około 20 użytkowników będzie działał bez problemów przy ustawieniach "CPU: 1core", "memory: 512MB" i "SSD: 25GB".
Badanie opiera się na założeniu, że żadne inne oprogramowanie nie działa z marginalną wydajnością. Zaleca się wybór specyfikacji z pewną swobodą, ponieważ jest to wartość marginalna.
Dziękujemy, że oglądaliście do końca.
■INFORMATION
Kliknij tutaj, aby przejść do górnej strony INFORMACJI.
■PROFILE
Kliknij tutaj, aby zobaczyć profil.
■Dane kontaktowe.
W przypadku pytań dotyczących artykułu prosimy o kontakt tutaj.