Ik heb gemeten hoeveel WEB/AP servers (Apache en Tomcat) maximaal tegelijk aankunnen met een VPS huurserver.


Datum van publicatie:1 januari 2021.



INFOMARTION > Ik heb gemeten hoeveel WEB/AP servers (Apache en Tomcat) maximaal tegelijk aankunnen met een VPS huurserver.

Overzicht.

Ik heb het maximum aantal gevallen gemeten dat de WEB/AP servers (Apache en Tomcat) tegelijkertijd kunnen verwerken, en ik wil graag over de resultaten schrijven. Wij waren nieuwsgierig naar het maximum aantal verzoeken dat kon worden geserveerd, dus hebben wij een enquête gehouden. Gebruik dit als referentie voor het selecteren van VPS server specificaties.

Deze keer zijn de metingen uitgevoerd op de WEB/AP-servers (Apache en Tomcat), maar zie het onderstaande artikel voor metingen op alleen de WEB (Apache).

Ik heb het maximum aantal gevallen gemeten dat de webserver (Apache) tegelijk kan verwerken met een VPS huurserver.

Inhoudsopgave

  1. meting
  2. Details van de meetresultaten
  3. samenvatting

1. meting

1-1. Meetomgeving

De omgeving waarin de metingen zullen worden verricht, is de volgende.

■Informatie over de huurserver

CPU2core
memory1GB
SSD50GB

■Server informatie

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

1-2. Meetmethode

Ik zou dit willen meten met JMeter. JMeter is een instrument voor het meten van belasting dat in Java draait. Met dit instrument kan een groot aantal verzoeken tegelijk worden ingediend. We willen het aantal gelijktijdige verzoeken geleidelijk opvoeren met JMeter en de belasting opvoeren tot de verwerking niet langer kan worden verwerkt.

Specifieke voorwaarden zijn.

  • aanvraaginterval・・・5 seconden.
  • Aantal gelijktijdige verzoeken・・・10 kisten.(De metingen werden geleidelijk opgevoerd met telkens 10 gevallen.)
  • Het meten van tijd・・・60 seconden.

De meettijd is "60 seconden" en het verzoekinterval "5 seconden", zodat u 12 keer (60 ÷ 5) herhaaldelijk toegang wilt krijgen tot het systeem.

1-3. meetresultaat

Uiteindelijk zijn veel mensen geïnteresseerd in de conclusie van welke specs de server aankan en hoeveel hij aankan, dus wil ik graag eerst de conclusie vermelden.

CPU:2core
memory:1GB
SSD:50GB
Tot 80 gelijktijdige verzoeken kunnen worden verwerkt

De resultaten van deze meting toonden het bovenstaande aan. Uit bovenstaande resultaten kan het volgende worden afgeleid. Probeer dit als een criterium te gebruiken bij het kiezen van serverspecificaties.

CPU:1core
memory:512MB
SSD:25GB
Er kunnen maximaal 20 gelijktijdige verzoeken worden verwerkt.
CPU:2core
memory:1GB
SSD:50GB
Tot 80 gelijktijdige verzoeken kunnen worden verwerkt
CPU:3core
memory:2GB
SSD:100GB
Er kunnen maximaal 200 gelijktijdige verzoeken worden verwerkt.

Er werd vastgesteld dat een systeem met een grootte van ongeveer 20 gebruikers zonder problemen zou werken met "CPU: 1core", "geheugen: 512MB" en "SSD: 25GB".

2. Details van de meetresultaten

Wij hebben de meetresultaten eerder beschreven, maar als u geïnteresseerd bent in wat voor resultaten wij hebben beschreven, kunt u ook de details van de meetresultaten bekijken die in de toekomst zullen worden beschreven.

2-1. WEB/AP-server (Apache, Tomcat) metingen

Het verzoek werd gedaan in een scenario waarin de gebruiker inlogt vanaf het inlogscherm en na het inloggen het lijstscherm te zien krijgt. Overigens is het scherm gebouwd met het Spring framework, inclusief de authenticatie functie.

Metingen gaven de volgende resultaten.

  • Voor 10 gelijktijdige verzoeken⇒OK
  • Voor 20 gelijktijdige verzoeken⇒OK
  • Voor 30 gelijktijdige verzoeken⇒OK
  • Voor 40 gelijktijdige verzoeken⇒OK
  • Voor 50 gelijktijdige verzoeken⇒OK
  • Voor 60 gelijktijdige verzoeken⇒OK
  • Voor 70 gelijktijdige verzoeken⇒OK
  • Voor 80 gelijktijdige verzoeken⇒OK
  • Voor 90 gelijktijdige verzoeken⇒NG

Fout opgetreden bij de 90e zaak. De oorzaak was een verbindingsfout met Apache. De toestand van de server was op dat moment als volgt.

  • CPU-gebruik・・・26%
  • geheugengebruik・・・100%

Een totaal gebrek aan geheugen was het knelpunt.

Voor de iets meer geeky, de Apache Multi-Processing Module (MPM) configuratie is als volgt. MPM wordt eenvoudig uitgelegd als de instelling van hoeveel Apache parallel mag verwerken.

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

De instelling die van belang is, is "250" voor "MaxRequestWorkers". Dit is een instelling voor het maximum aantal zaken dat Apache tegelijkertijd kan verwerken. '250', zodat 250 gevallen maximaal parallel verwerkt konden worden, maar kijkend naar het geheugengebruik, werd per geval ongeveer 8 MB geheugen gebruikt.

Java leek 320MB geheugen te gebruiken (248M voor heap en 72M voor metaspace) en Apache 640MB geheugen (8M x 80 processen), en hoewel Apache's MPM instellingswaarde '250' is, leek het erop dat het niet meer dan '80' processen kon aanmaken.
※De server heeft 1G geheugen, dus het totale geheugen voor Apache en Java is 960MB, wat bijna aan de bovengrens is.

De AP server (Java kant) werkte goed, dus het knelpunt was de WEB server (Apache).

Wanneer Apache en Tomcat zijn geïnstalleerd en draaien, hebben we ontdekt dat met de specificaties "CPU: 2core, geheugen: 1GB, SSD: 50GB", het aantal gelijktijdige toegangen "80" de limiet is.(De aanname is dat de geheugeninstellingen voor Java 248M voor heap en 72M voor metaspace zijn.)

2-2. overweging

Vanaf hier wordt het een afweging, maar aangezien geheugen de bottleneck is, zal, als het geheugen wordt gewijzigd, het aantal processen dat gelijktijdig kan worden verwerkt, ook toenemen.

【Aanwezig.(memory1GB)】

  • memory:1GB
  • Aantal Apache threads:80 gevallen.
  • Geheugenverbruik per thread in Apache.:8MB
  • Apache geheugenverbruik:640MB(80 gevallen.×8MB)
  • Tomcat geheugenverbruik:320MB(248 miljoen voor HEAP.、72m voor metaspace.)
  • Geheugenverbruik van Apache+Tomcat:960MB

【na de verandering(memory2GB)】

  • memory:2GB
  • Aantal Apache threads:200 gevallen
  • Geheugenverbruik per thread in Apache.:8MB
  • Apache geheugenverbruik:1600MB(200 gevallen×8MB)
  • Tomcat geheugenverbruik:320MB(248 miljoen voor HEAP.、72m voor metaspace.)
  • Geheugenverbruik van Apache+Tomcat:1920MB

Met 2 GB geheugen is het mogelijk om 200 gevallen tegelijk te verwerken. Als het geheugen wordt verhoogd naar 3 GB, lijkt het erop dat er meer gelijktijdige verwerking kan worden gedaan, maar de "MaxRequestWorkers (maximum aantal zaken dat gelijktijdig kan worden verwerkt)" van Apache's MPM is "250", dus afstemming hier zal ook nodig zijn als het geheugen verder wordt verhoogd. Ook kan het nodig zijn het Java-geheugen te tunen. Omgekeerd, als het geheugen wordt gehalveerd, zou het als volgt zijn.

【na de verandering(memory512GB)】

  • memory:512GB
  • Aantal Apache threads:20 gevallen
  • Geheugenverbruik per thread in Apache.:8MB
  • Apache geheugenverbruik:160MB(20 gevallen×8MB)
  • Tomcat geheugenverbruik:320MB(248 miljoen voor HEAP.、72m voor metaspace.)
  • Geheugenverbruik van Apache+Tomcat:480MB

3. samenvatting

De resultaten van het meten van het maximumaantal gevallen dat de WEB/AP-servers (Apache en Tomcat) tegelijkertijd kunnen verwerken, worden beschreven. Er werd vastgesteld dat een systeem met een grootte van ongeveer 20 gebruikers zonder problemen zou werken met "CPU: 1core", "geheugen: 512MB" en "SSD: 25GB".

Het onderzoek is gebaseerd op de veronderstelling dat geen andere software tegen marginale prestaties draait. Het verdient aanbeveling een specificatie met enige speelruimte te kiezen, aangezien het om een marginale waarde gaat.

Bedankt voor het kijken tot het einde.