Jeg har målt det maksimale antal WEB/AP-servere (Apache og Tomcat), som kan håndtere på samme tid ved hjælp af en VPS-lejeserver.
Udgivelsesdato:1. januar 2021.
INFOMARTION > Jeg har målt det maksimale antal WEB/AP-servere (Apache og Tomcat), som kan håndtere på samme tid ved hjælp af en VPS-lejeserver.
Oversigt.
Jeg har målt det maksimale antal sager, som WEB/AP-serverne (Apache og Tomcat) kan behandle på samme tid, og jeg vil gerne skrive om resultaterne. Vi var nysgerrige efter at vide, hvor mange anmodninger der maksimalt kunne betjenes, så vi foretog en undersøgelse. Brug dette som en reference til at vælge specifikationer for VPS-servere.
Denne gang blev der foretaget målinger på WEB/AP-servere (Apache og Tomcat), men se venligst artiklen nedenfor for målinger kun på WEB-serveren (Apache).
Indholdsfortegnelse
1. måling
1-1. Miljø for måling
I det følgende beskrives de omgivelser, hvor målingerne vil blive foretaget.
■Oplysninger om udlejningsserver
CPU | 2core |
---|---|
memory | 1GB |
SSD | 50GB |
■Serveroplysninger
OS | CentOS 7.4 64bit |
---|---|
Webserver | Apache HTTP Server 2.4.41 |
AP-server | Apache Tomcat 9.0.27 |
DB-server | PostgreSQL 10.2 |
Java | OpenJDK 11 |
1-2. Målemetode
Jeg vil gerne måle dette ved hjælp af JMeter. JMeter er et værktøj til belastningsmåling, der kører i Java. Værktøjet gør det muligt at sende et stort antal anmodninger på samme tid. Vi vil gerne gradvist øge antallet af samtidige anmodninger ved hjælp af JMeter og øge belastningen, indtil behandlingen ikke længere kan håndteres.
Specifikke betingelser omfatter.
- anmode om interval・・・5 sek.
- Antal samtidige anmodninger・・・10 tilfælde.(Målingerne blev gradvist forøget med 10 tilfælde hver.)
- Måling af tid・・・60 sekunder.
Måletiden er "60 sekunder" og forespørgselsintervallet "5 sekunder", så du ønsker at få adgang til systemet 12 gange (60÷5) gentagne gange.
1-3. måleresultat
I sidste ende er mange mennesker interesseret i konklusionen om, hvilke specifikationer serveren kan håndtere, og hvor meget den kan håndtere, så jeg vil gerne sige konklusionen først.
CPU:2core memory:1GB SSD:50GB | Der kan behandles op til 80 samtidige anmodninger |
---|
Resultaterne af denne måling viste ovenstående. Ovenstående resultater tyder på, at der kan udledes følgende. Prøv at bruge dette som et kriterium, når du vælger serverspecifikationer.
CPU:1core memory:512MB SSD:25GB | Der kan behandles op til 20 samtidige anmodninger. |
---|---|
CPU:2core memory:1GB SSD:50GB | Der kan behandles op til 80 samtidige anmodninger |
CPU:3core memory:2GB SSD:100GB | Der kan behandles op til 200 samtidige anmodninger. |
Det blev konstateret, at et system med en størrelse på ca. 20 brugere ville fungere uden problemer med "CPU: 1core", "hukommelse: 512 MB" og "SSD: 25 GB".
2. Detaljerede oplysninger om måleresultater
Vi har beskrevet måleresultaterne tidligere, men hvis du er interesseret i, hvilke resultater vi har beskrevet, kan du også se nærmere oplysninger om måleresultaterne, som vil blive beskrevet i fremtiden.
2-1. Målinger af WEB/AP-server (Apache, Tomcat)
Anmodningen blev sendt i et scenarie, hvor brugeren logger ind fra login-skærmen, og når brugeren er logget ind, vises listen på skærmen. Skærmen er i øvrigt opbygget ved hjælp af Spring-rammen, herunder autentificeringsfunktionen.
Målingerne viste følgende resultater.
- For 10 samtidige anmodninger⇒OK
- For 20 samtidige anmodninger⇒OK
- For 30 samtidige anmodninger⇒OK
- For 40 samtidige anmodninger⇒OK
- For 50 samtidige anmodninger⇒OK
- For 60 samtidige anmodninger⇒OK
- For 70 samtidige anmodninger⇒OK
- For 80 samtidige anmodninger⇒OK
- For 90 samtidige anmodninger⇒NG
Der er opstået en fejl i det 90. tilfælde. Årsagen var en forbindelsesfejl til Apache. Serverens tilstand på dette tidspunkt var som følger.
- CPU-udnyttelse・・・26%
- udnyttelse af hukommelse・・・100%
En fuldstændig mangel på hukommelse var flaskehalsen.
For de lidt mere nørdede kan du se her, hvordan Apaches MPM-modul (Multi-Processing Module) er konfigureret MPM forklares ganske enkelt som indstillingen af, hvor meget Apache har lov til at behandle parallelt.
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
Indstillingen af interesse er "250" for "MaxRequestWorkers". Dette er en indstilling for det maksimale antal sager, som Apache kan behandle på samme tid. '250', så der kunne behandles 250 sager maksimalt parallelt, men hvis man ser på hukommelsesforbruget, blev der brugt ca. 8 MB hukommelse pr. sag.
Java syntes at bruge 320 MB hukommelse (248 M til heap og 72 M til metaspace) og Apache 640 MB hukommelse (8 M x 80 processer), og selv om Apaches MPM-indstillingsværdi er "250", så det ud til, at den ikke kunne oprette mere end "80" processer.
※Serveren har 1 g hukommelse, så den samlede hukommelse for Apache og Java er 960 MB, hvilket næsten er den øvre grænse.
AP-serveren (Java-siden) fungerede fint, så flaskehalsen var WEB-serveren (Apache).
Når Apache og Tomcat er installeret og kører, fandt vi ud af, at med specifikationerne "CPU: 2core, hukommelse: 1GB, SSD: 50GB", er antallet af samtidige adganger "80" grænsen.(Antagelsen er, at hukommelsesindstillingerne for Java er 248M for heap og 72M for metaspace.)
2-2. overvejelse
Herfra bliver det en overvejelse, men da hukommelsen er flaskehalsen, vil antallet af processer, der kan behandles samtidigt, også stige, hvis hukommelsen ændres.
【Til stede.(memory1GB)】
- memory:1GB
- Antal Apache-tråde:80 kasser.
- Hukommelsesforbrug pr. tråd i Apache.:8MB
- Apache hukommelsesforbrug:640MB(80 kasser.×8MB)
- Tomcat-hukommelsesforbrug:320MB(248 mio. EUR til HEAP.、72m for metaspace.)
- Hukommelsesforbrug for Apache+Tomcat:960MB
【efter ændringen(memory2GB)】
- memory:2GB
- Antal Apache-tråde:200 sager
- Hukommelsesforbrug pr. tråd i Apache.:8MB
- Apache hukommelsesforbrug:1600MB(200 sager×8MB)
- Tomcat-hukommelsesforbrug:320MB(248 mio. EUR til HEAP.、72m for metaspace.)
- Hukommelsesforbrug for Apache+Tomcat:1920MB
Med 2 GB hukommelse kan det være muligt at behandle 200 sager samtidig. Hvis hukommelsen øges til 3 GB, ser det ud til, at der kan udføres mere samtidig behandling, men "MaxRequestWorkers (maksimalt antal sager, der kan behandles samtidig)" for Apaches MPM er "250", så det vil også være nødvendigt at justere her, hvis hukommelsen øges yderligere. Det kan også være nødvendigt at justere Java-hukommelsen. Omvendt, hvis hukommelsen halveres, vil det være som følger.
【efter ændringen(memory512GB)】
- memory:512GB
- Antal Apache-tråde:20 sager
- Hukommelsesforbrug pr. tråd i Apache.:8MB
- Apache hukommelsesforbrug:160MB(20 sager×8MB)
- Tomcat-hukommelsesforbrug:320MB(248 mio. EUR til HEAP.、72m for metaspace.)
- Hukommelsesforbrug for Apache+Tomcat:480MB
3. resumé
Resultaterne af måling af det maksimale antal sager, som WEB/AP-serverne (Apache og Tomcat) kan behandle på samme tid, er beskrevet. Det blev konstateret, at et system med en størrelse på ca. 20 brugere ville fungere uden problemer med "CPU: 1core", "hukommelse: 512 MB" og "SSD: 25 GB".
Undersøgelsen er baseret på den antagelse, at ingen anden software kører med marginal ydeevne. Det anbefales at vælge en specifikation med en smule spillerum, da der er tale om en marginalværdi.
Tak, fordi du kiggede med til slutningen.