Jag mätte det maximala antalet WEB/AP-servrar (Apache och Tomcat) som kan hantera samtidigt med hjälp av en hyrd VPS-server.


Datum för offentliggörande:1 januari 2021.



INFOMARTION > Jag mätte det maximala antalet WEB/AP-servrar (Apache och Tomcat) som kan hantera samtidigt med hjälp av en hyrd VPS-server.

Översikt.

Jag har mätt det maximala antalet fall som WEB/AP-servrarna (Apache och Tomcat) kan behandla samtidigt, och jag vill skriva om resultaten. Vi var nyfikna på det maximala antalet förfrågningar som kunde betjänas, så vi genomförde en undersökning. Använd detta som en referens när du väljer specifikationer för VPS-servern.

Den här gången utfördes mätningarna på WEB/AP-servrarna (Apache och Tomcat), men se artikeln nedan för mätningar enbart på WEB-servrarna (Apache).

Jag mätte det maximala antalet fall som webbservern (Apache) kan hantera samtidigt med hjälp av en hyrd VPS-server.

Innehållsförteckning

  1. mätning
  2. Uppgifter om mätresultat
  3. sammanfattning

1. mätning

1-1. Mätningsmiljö

Följande är den miljö där mätningarna kommer att utföras.

■Information om uthyrningsserver

CPU2core
memory1GB
SSD50GB

■Information om servern

OSCentOS 7.4 64bit
WebbserverApache HTTP Server 2.4.41
AP-serverApache Tomcat 9.0.27
DB-serverPostgreSQL 10.2
JavaOpenJDK 11

1-2. Mätmetod

Jag vill mäta detta med hjälp av JMeter. JMeter är ett verktyg för belastningsmätning som körs i Java. Verktyget gör det möjligt att skicka ett stort antal förfrågningar samtidigt. Vi vill gradvis öka antalet samtidiga förfrågningar med hjälp av JMeter och öka belastningen tills bearbetningen inte kan hanteras längre.

Specifika villkor är bland annat.

  • Intervall för begäran・・・5 sek.
  • Antal samtidiga förfrågningar・・・10 fall.(Mätningarna ökade gradvis med 10 fall vardera.)
  • Mätning av tid・・・60 sekunder.

Mättiden är "60 sekunder" och förfrågningsintervallet "5 sekunder", så du vill komma åt systemet 12 gånger (60÷5) upprepade gånger.

1-3. resultat av mätningen

I slutändan är många människor intresserade av slutsatsen om vilka specifikationer servern kan hantera och hur mycket den kan hantera, så jag skulle vilja säga slutsatsen först.

CPU:2core
memory:1GB
SSD:50GB
Upp till 80 samtidiga förfrågningar kan behandlas.

Resultaten av denna mätning visade ovanstående. Av ovanstående resultat kan man dra följande slutsatser. Försök att använda detta som ett kriterium när du väljer serverspecifikationer.

CPU:1core
memory:512MB
SSD:25GB
Upp till 20 samtidiga förfrågningar kan behandlas.
CPU:2core
memory:1GB
SSD:50GB
Upp till 80 samtidiga förfrågningar kan behandlas.
CPU:3core
memory:2GB
SSD:100GB
Upp till 200 samtidiga förfrågningar kan behandlas.

Det visade sig att ett system med cirka 20 användare skulle fungera utan problem med "CPU: 1core", "memory: 512MB" och "SSD: 25GB".

2. Uppgifter om mätresultat

Vi har beskrivit mätresultaten tidigare, men om du är intresserad av vilken typ av resultat vi har beskrivit kan du också läsa mer om mätresultaten som kommer att beskrivas i framtiden.

2-1. Mätningar av WEB/AP-servern (Apache, Tomcat)

Förfrågan uppstod i ett scenario där användaren loggar in från inloggningsskärmen och efter inloggningen visas listskärmen. Skärmen är för övrigt byggd med Spring-ramverket, inklusive autentiseringsfunktionen.

Mätningarna gav följande resultat.

  • För 10 samtidiga förfrågningar⇒OK
  • För 20 samtidiga förfrågningar⇒OK
  • För 30 samtidiga förfrågningar⇒OK
  • För 40 samtidiga förfrågningar⇒OK
  • För 50 samtidiga förfrågningar⇒OK
  • För 60 samtidiga förfrågningar⇒OK
  • För 70 samtidiga förfrågningar⇒OK
  • För 80 samtidiga förfrågningar⇒OK
  • För 90 samtidiga förfrågningar⇒NG

Ett fel inträffade vid det 90:e fallet. Orsaken var ett fel i anslutningen till Apache. Serverns tillstånd vid denna tidpunkt var följande.

  • CPU-användning・・・26%
  • minnesanvändning・・・100%

Flaskhalsen var en fullständig brist på minne.

För den lite mer nördige är konfigurationen av Apache Multi-Processing Module (MPM) följande. MPM är enkelt förklarat en inställning av hur mycket Apache tillåts bearbeta parallellt.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

Den intressanta inställningen är "250" för "MaxRequestWorkers". Detta är en inställning för det maximala antalet ärenden som Apache kan behandla samtidigt. "250", så 250 fall kunde behandlas maximalt parallellt, men om man tittar på minnesanvändningen användes cirka 8 MB minne per fall.

Java tycktes använda 320 MB minne (248 M för heap och 72 M för metaspace) och Apache 640 MB minne (8 M x 80 processer), och trots att Apaches MPM-inställningsvärde är "250" verkade det som om den inte kunde skapa fler än "80" processer.
※Servern har 1 G minne, så det totala minnet för Apache och Java är 960 MB, vilket nästan är den övre gränsen.

AP-servern (Java-sidan) fungerade bra, så flaskhalsen var WEB-servern (Apache).

När Apache och Tomcat är installerade och körs, fann vi att med specifikationerna "CPU: 2core, memory: 1GB, SSD: 50GB" är gränsen för antalet samtidiga åtkomster "80".(Antagandet är att minnesinställningarna för Java är 248M för heap och 72M för metaspace.)

2-2. beaktande

Härifrån blir det ett övervägande, men eftersom minnet är flaskhalsen kommer antalet processer som kan behandlas samtidigt att öka om minnet ändras.

【Närvarande.(memory1GB)】

  • memory:1GB
  • Antal Apache-trådar:80 fall.
  • Minnesförbrukning per tråd i Apache:8MB
  • Apache minnesförbrukning:640MB(80 fall.×8MB)
  • Tomcat minnesförbrukning:320MB(248 miljoner euro till HEAP.、72m för metaspace.)
  • Minnesförbrukning för Apache+Tomcat:960MB

【efter ändringen(memory2GB)】

  • memory:2GB
  • Antal Apache-trådar:200 fall
  • Minnesförbrukning per tråd i Apache:8MB
  • Apache minnesförbrukning:1600MB(200 fall×8MB)
  • Tomcat minnesförbrukning:320MB(248 miljoner euro till HEAP.、72m för metaspace.)
  • Minnesförbrukning för Apache+Tomcat:1920MB

Med 2 GB minne kan det vara möjligt att behandla 200 ärenden samtidigt. Om minnet ökas till 3 GB verkar det som om fler samtidiga bearbetningar kan göras, men "MaxRequestWorkers (maximalt antal ärenden som kan bearbetas samtidigt)" i Apaches MPM är "250", så det kommer också att bli nödvändigt att justera detta om minnet ökas ytterligare. Det kan också behövas en justering av Java-minnet. Omvänt, om minnet halveras, skulle det se ut på följande sätt.

【efter ändringen(memory512GB)】

  • memory:512GB
  • Antal Apache-trådar:20 fall
  • Minnesförbrukning per tråd i Apache:8MB
  • Apache minnesförbrukning:160MB(20 fall×8MB)
  • Tomcat minnesförbrukning:320MB(248 miljoner euro till HEAP.、72m för metaspace.)
  • Minnesförbrukning för Apache+Tomcat:480MB

3. sammanfattning

Resultaten av mätningen av det maximala antalet fall som WEB/AP-servrarna (Apache och Tomcat) kan behandla samtidigt beskrivs. Det visade sig att ett system med cirka 20 användare skulle fungera utan problem med "CPU: 1core", "memory: 512MB" och "SSD: 25GB".

Undersökningen bygger på antagandet att ingen annan programvara körs med marginell prestanda. Det rekommenderas att välja en specifikation med lite spelrum eftersom det är ett marginellt värde.

Tack för att du tittade på till slutet.




■INFORMATION

Klicka här för att komma till den översta sidan med information.


■PROFILE

Klicka här för en profil.


■Kontaktuppgifter.

För frågor om artikeln, vänligen kontakta oss här.