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.
Data publikacji:31 grudnia 2020 r.
INFOMARTION > 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.
Przegląd.
Zmierzyłem maksymalną liczbę przypadków, które serwer WWW (Apache) może przetworzyć 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 tylko na serwerze WEB (Apache), natomiast pomiary na serwerach WEB/AP (Apache i Tomcat) można znaleźć 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 |
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 dłużej obsługiwać 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 | Jednocześnie może być przetwarzanych do 120 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 60 wniosków. |
---|---|
CPU:2core memory:1GB SSD:50GB | Jednocześnie może być przetwarzanych do 120 wniosków. |
CPU:3core memory:2GB SSD:100GB | Jednocześnie może być przetwarzanych do 240 wniosków. |
Nawet przy specyfikacji "CPU: 1core", "memory: 512MB" i "SSD: 25GB" okazało się, że system liczący około 60 osób może działać bez problemów.
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 (Apache)
Powtarzające się żądania były rzucane w stosunku do stron utworzonych w języku HTML. Jest to prosta strona bez przetwarzania PHP i bez skomplikowanych operacji JavaScript.
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ń⇒OK
- Dla 100 jednoczesnych zgłoszeń⇒OK
- 110 jednoczesnych zgłoszeń⇒OK
- Dla 120 jednoczesnych zgłoszeń⇒OK
- Dla 130 jednoczesnych zgłoszeń⇒NG
Błąd wystąpił w 130. przypadku. Przyczyną był błąd połączenia z serwerem Apache. Stan serwera w tym czasie był następujący.
- Wykorzystanie procesora・・・26%
- wskaźnik wykorzystania 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", czyli 250 spraw mogło być przetwarzanych maksymalnie równolegle, ale patrząc na wykorzystanie pamięci, na każdą sprawę przypadało około 8 MB pamięci.
Wydawało się, że używa 960 MB pamięci (8M x 120 procesów), a wartość ustawienia wynosiła "250", ale wydawało się, że nie można utworzyć więcej niż "120" procesów.
※Pamięć serwera jest prawie wyczerpana do limitu 1G.
Podczas faktycznej obsługi serwera, jeśli uwzględni się także PHP i Javę, limit wynosi około 100 spraw, a jeśli jest miejsce, równolegle może być przetwarzanych 80 spraw.
Gdy zainstalowany i uruchomiony jest tylko Apache, przy specyfikacji "CPU: 2core, pamięć: 1GB, SSD: 50GB", liczba jednoczesnych dostępów "120" okazała się wartością graniczną.
2-2. rozważania
Ponieważ wąskim gardłem jest pamięć, po jej zmianie zwiększy się także liczba procesów, które mogą być przetwarzane współbieżnie.
【Obecny.(memory1GB)】
- memory:1GB
- Liczba wątków Apache:120 przypadków
- Zużycie pamięci na wątek w Apache:8MB
- Zużycie pamięci przez Apache:960MB(120 przypadków×8MB)
【po zmianie(memory2GB)】
- memory:2GB
- Liczba wątków Apache:240 przypadków.
- Zużycie pamięci na wątek w Apache:8MB
- Zużycie pamięci przez Apache:1920MB(240 przypadków.×8MB)
Jeśli pamięć zostanie zwiększona do 2 GB, możliwe będzie podwojenie liczby spraw do około 240 prowadzonych równolegle. 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. 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:60 przypadków.
- Zużycie pamięci na wątek w Apache:8MB
- Zużycie pamięci przez Apache:480MB(60 przypadków.×8MB)
3. streszczenie
Zmierzyliśmy maksymalną liczbę przypadków, które serwer WWW (Apache) może przetworzyć w tym samym czasie. Okazało się, że system liczący około 60 osób można bez problemu obsługiwać przy użyciu "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.