Belastningstest av Apache på en liten VPS


Publicerad:

Uppdaterad:


Tekniska artiklar > Belastningstest av Apache på en liten VPS

Status 2026 och säker användning

Slutsats: Artikeln dokumenterar ett historiskt VPS-experiment, inte en allmän gräns för Apache. Kapaciteten beror på arbetet per förfrågan, MPM och worker-gränser, KeepAlive, TLS, CPU, minne, lagring, nätverk, testklientens placering och godtagbar svarstid.

Det här går artikeln igenom

  • Hur originaltestet lades upp och vad de observerade värdena visar – och inte visar.
  • Vilken statistik från Apache och operativsystemet som hjälper till att hitta den första flaskhalsen.
  • Hur ett reproducerbart belastningstest utformas med uppvärmning, percentiler, felstatistik och telemetri på servern.

Målgrupp: Ingenjörer som planerar ett inledande belastningstest av en webbserver på en liten VPS.

Läge 2026: Värdena nedan är bevarade från författarens ursprungliga miljö och mättes inte på nytt inför uppdateringen. De är varken ett aktuellt leverantörsriktmärke eller en rekommendation för produktionsdimensionering. Testa den egna applikationen mot definierade gränser för svarstid och fel.

Säkerhetsinformation: Belastningstesta endast system som du har uttryckligt tillstånd att testa. Kommandona och konfigurationsexemplen i originalartikeln har inte testats på nytt i en aktuell produktionsmiljö. Kontrollera versioner med support, säkerhetskopior, åtkomstkontroller och återställningssteg i en separat testmiljö.

Viktiga officiella källor

Översikt

Det historiska experimentet belastade en enkel HTML-sida i Apache HTTP Server på en VPS och ökade samtidigheten tills fel uppstod. Resultatet beskriver endast den testade konfigurationen och ska inte användas som en allmän kapacitetsgaranti.

En separat artikel dokumenterar motsvarande experiment med både Apache HTTP Server och Tomcat.

Belastningstest av Apache och Tomcat på en VPS

Innehållsförteckning

  1. Testupplägg
  2. Detaljerade testresultat
  3. Sammanfattning

1. Testupplägg

1-1. Testmiljö

Testet genomfördes i följande miljö.

■ VPS-resurser

CPU2 kärnor
Minne1 GB
SSD50 GB

■ Serverprogramvara

OSCentOS 7.4 64bit
WebbserverApache HTTP Server 2.4.41

1-2. Testmetod

JMeter, ett Java-baserat belastningstestverktyg, användes för att skicka samtidiga förfrågningar. Antalet samtidiga testtrådar ökades stegvis tills anslutningsfel uppstod.

Testvillkoren var följande:

  • Intervall mellan förfrågningar: 5 sekunder.
  • Samtidighet: start vid 10 testtrådar och ökning med 10 per test.
  • Testtid: 60 sekunder.

Med 60 sekunders testtid och 5 sekunders intervall gjorde varje testtråd 12 förfrågningar (60÷5).

1-3. Observerat resultat

I den testade miljön rapporterades inget fel upp till 120 samtidiga testtrådar. Vid 130 uppstod ett anslutningsfel.

CPU: 2 kärnor
Minne: 1 GB
SSD: 50 GB
120 samtidiga testtrådar utan rapporterat fel i detta test.

Originalartikeln gjorde därefter följande linjära uppskattningar utifrån minnesmängden. De andra konfigurationerna testades inte och tabellen ska inte användas för dimensionering.

CPU: 1 kärna
Minne: 512 MB
SSD: 25 GB
Hypotetisk linjär uppskattning: 60 samtidiga testtrådar.
CPU: 2 kärnor
Minne: 1 GB
SSD: 50 GB
Observerat i originaltestet: 120 samtidiga testtrådar.
CPU: 3 kärnor
Minne: 2 GB
SSD: 100 GB
Hypotetisk linjär uppskattning: 240 samtidiga testtrådar.

Antalet samtidiga testtrådar kan inte räknas om direkt till antal användare. Tabellen visar därför inte att en viss VPS klarar ett visst antal personer i produktion.

2. Detaljerade testresultat

Det här avsnittet redovisar de observationer som låg bakom resultatet och skiljer dem från efterföljande uppskattningar.

2-1. Test av Apache HTTP Server

Upprepade förfrågningar skickades till en enkel statisk HTML-sida utan PHP-bearbetning eller omfattande JavaScript.

Originaltestet noterade följande:

  • 10 samtidiga testtrådar: OK
  • 20 samtidiga testtrådar: OK
  • 30 samtidiga testtrådar: OK
  • 40 samtidiga testtrådar: OK
  • 50 samtidiga testtrådar: OK
  • 60 samtidiga testtrådar: OK
  • 70 samtidiga testtrådar: OK
  • 80 samtidiga testtrådar: OK
  • 90 samtidiga testtrådar: OK
  • 100 samtidiga testtrådar: OK
  • 110 samtidiga testtrådar: OK
  • 120 samtidiga testtrådar: OK
  • 130 samtidiga testtrådar: fel

Vid 130 samtidiga testtrådar uppstod ett anslutningsfel. Serverns rapporterade resursanvändning var då:

  • CPU-användning: 26%
  • Minnesanvändning: 100%

Minnet var den tydliga flaskhalsen i den här körningen.

Apache använde följande konfiguration för prefork-MPM. MPM styr bland annat hur många förfrågningar som kan behandlas samtidigt.

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

MaxRequestWorkers var satt till 250 och utgjorde alltså inte den första begränsningen i testet. Originalanalysen uppskattade minnesförbrukningen till ungefär 8 MB per prefork-process.

Med uppskattningen 8 MB per process motsvarar 120 processer cirka 960 MB.
Trots MaxRequestWorkers-värdet 250 räckte serverns 1 GB minne därför inte till fler processer i den testade miljön.

Originalartikeln antog en säkerhetsmarginal på cirka 80–100 samtidiga testtrådar om PHP eller Java också använde resurser. Den nivån mättes inte och måste fastställas med den verkliga applikationen.

Det enda observerade resultatet var att den specifika Apache-konfigurationen på "CPU: 2 kärnor, minne: 1 GB, SSD: 50 GB" klarade 120 samtidiga testtrådar men gav anslutningsfel vid 130.

2-2. Tolkning och begränsningar

Eftersom minnet var flaskhalsen gjorde originalartikeln en linjär uppskattning av hur processantalet kunde förändras med mer eller mindre minne. Beräkningen är en hypotes, inte ett testresultat.

Observerad miljö med 1 GB minne:

  • Minne: 1 GB
  • Uppskattat antal Apache-processer: 120
  • Uppskattad minnesförbrukning per process: 8 MB
  • Uppskattad minnesförbrukning för Apache: 960 MB (120×8 MB)

Hypotetiskt exempel med 2 GB minne:

  • Minne: 2 GB
  • Uppskattat antal Apache-processer: 240
  • Antagen minnesförbrukning per process: 8 MB
  • Beräknad minnesförbrukning för Apache: 1 920 MB (240×8 MB)

En fördubbling av minnet bevisar inte att kapaciteten fördubblas. CPU, svarstid, MPM, MaxRequestWorkers och applikationens arbete kan bli nästa flaskhals. Varje ny konfiguration måste därför mätas separat.

Hypotetiskt exempel med 512 MB minne:

  • Minne: 512 MB
  • Uppskattat antal Apache-processer: 60
  • Antagen minnesförbrukning per process: 8 MB
  • Beräknad minnesförbrukning för Apache: 480 MB (60×8 MB)

3. Sammanfattning

I originaltestet klarade en enkel statisk Apache-sida 120 samtidiga JMeter-trådar på en VPS med två CPU-kärnor och 1 GB minne; vid 130 trådar uppstod ett anslutningsfel samtidigt som minnet var fullt.

Resultatet är inte ett mått på maximalt antal användare och de linjära uppskattningarna för andra minnesstorlekar är inte verifierade. Produktionsdimensionering kräver ett nytt test av den verkliga applikationen med svarstidspercentiler, feltrösklar och servertelemetri.

Använd därför mätningen som en historisk datapunkt, inte som en generell kapacitetsgräns.