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


Datum van publicatie:31 december 2020.



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

Overzicht.

Ik heb het maximum aantal gevallen gemeten dat de webserver (Apache) tegelijk kan 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 alleen metingen verricht op de WEB (Apache), maar voor metingen op de WEB/AP-servers (Apache en Tomcat) wordt verwezen naar het onderstaande artikel.

Ik heb gemeten hoeveel WEB/AP servers (Apache en Tomcat) maximaal tegelijk aankunnen 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

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
Er kunnen maximaal 120 gelijktijdige verzoeken 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 60 gelijktijdige verzoeken worden verwerkt.
CPU:2core
memory:1GB
SSD:50GB
Er kunnen maximaal 120 gelijktijdige verzoeken worden verwerkt.
CPU:3core
memory:2GB
SSD:100GB
Er kunnen maximaal 240 gelijktijdige verzoeken worden verwerkt.

Zelfs met specificaties van "CPU: 1core", "geheugen: 512MB" en "SSD: 25GB", bleek een systeem van ongeveer 60 mensen zonder problemen te kunnen werken.

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-server (Apache) metingen

Herhaalde verzoeken werden tegen pagina's gegooid die in HTML waren gemaakt. Dit is een eenvoudige pagina zonder PHP verwerking of JavaScript complexiteit.

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⇒OK
  • Voor 100 gelijktijdige verzoeken⇒OK
  • 110 gelijktijdige verzoeken⇒OK
  • Voor 120 gelijktijdige verzoeken⇒OK
  • Voor 130 gelijktijdige verzoeken⇒NG

Er is een fout opgetreden bij de 130e 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.

Het leek 960 MB geheugen te gebruiken (8M x 120 processen) en de instelwaarde was '250', maar het leek erop dat het niet mogelijk was om meer dan '120' processen aan te maken.
※Het geheugen van de server zit bijna aan zijn limiet van 1G.

Bij de eigenlijke exploitatie van de server, als ook PHP en Java worden meegerekend, ligt de limiet rond de 100 gevallen, en als er ruimte is, kunnen 80 gevallen tegelijk parallel worden verwerkt.

Wanneer alleen Apache is geïnstalleerd en draait, met de specificaties "CPU: 2core, geheugen: 1GB, SSD: 50GB", bleek het aantal gelijktijdige toegangen "120" de limiet te 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:120 gevallen
  • Geheugenverbruik per thread in Apache.:8MB
  • Apache geheugenverbruik:960MB(120 gevallen×8MB)

【na de verandering(memory2GB)】

  • memory:2GB
  • Aantal Apache threads:240 gevallen.
  • Geheugenverbruik per thread in Apache.:8MB
  • Apache geheugenverbruik:1920MB(240 gevallen.×8MB)

Als het geheugen wordt verhoogd tot 2 GB, kan het aantal gevallen worden verdubbeld tot ongeveer 240 tegelijk. 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. Omgekeerd, als het geheugen wordt gehalveerd, zou het als volgt zijn.

【na de verandering(memory512GB)】

  • memory:512GB
  • Aantal Apache threads:60 kisten.
  • Geheugenverbruik per thread in Apache.:8MB
  • Apache geheugenverbruik:480MB(60 kisten.×8MB)

3. samenvatting

Wij hebben het maximumaantal gevallen gemeten dat de webserver (Apache) tegelijkertijd kan verwerken. Er werd vastgesteld dat een systeem van ongeveer 60 mensen zonder problemen kon 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.