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.

Zmierzyłem maksymalną liczbę przypadków, które serwer WWW (Apache) może obsłużyć jednocześnie, korzystając z serwera wynajmowanego na VPS.

Spis treści

  1. pomiar
  2. Szczegółowe informacje o wynikach pomiarów
  3. streszczenie

1. pomiar

1-1. Środowisko pomiarowe

Poniżej przedstawiono środowisko, w którym będą przeprowadzane pomiary.

■Informacje o serwerze wynajmu

CPU2core
memory1GB
SSD50GB

■Informacje o serwerze

OSCentOS 7.4 64bit
Serwer WWWApache HTTP Server 2.4.41
Serwer APApache Tomcat 9.0.27
Serwer DBPostgreSQL 10.2
JavaOpenJDK 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.