Apache HTTP servera slodzes tests nelielā VPS: metode un rezultāti


Publikācijas datums:

Atjaunināts:


Tehniskie raksti > Apache HTTP servera slodzes tests nelielā VPS: metode un rezultāti

2026. gada statuss un droša lietošana

Galvenais: šajā rakstā dokumentēts viens VPS eksperiments, nevis universāla Apache vienlaicīgās slodzes robeža. Jauda ir atkarīga no atbildes apstrādes, MPM procesu vai pavedienu ierobežojumiem, KeepAlive, TLS, CPU, atmiņas, krātuves, tīkla, slodzes ģeneratora novietojuma un pieļaujamā latentuma.

Ko jūs uzzināsiet

  • Kā tika izkārtots sākotnējais tests un ko tajā novērotie skaitļi parāda un ko nerāda.
  • Kura Apache un operētājsistēmas metrika palīdz noteikt pirmo vājo vietu.
  • Kā izveidot atkārtojamu slodzes testu ar iesildīšanu, procentilēm, kļūdām un servera puses telemetriju.

Kam tas paredzēts: inženieriem, kuri plāno sākotnēju tīmekļa servera slodzes pārbaudi nelielā VPS.

2026. gada konteksts: tālāk norādītie mērījumi saglabāti no autora sākotnējās vides un šim atjauninājumam nav atkārtoti. Neizmantojiet tos kā pašreizēju pakalpojuma sniedzēja etalonu vai ražošanas sistēmas izmēra ieteikumu; pārbaudiet savu lietojumprogrammu un tās kļūmju sliekšņus.

Drošības piezīme. Sākotnējā rakstā esošās komandas un konfigurācijas piemēri nav atkārtoti izpildīti pašreizējā ražošanas vidē. Pirms to lietošanas pārbaudiet atbalstītās versijas, dublējumus, piekļuves vadīklas un atcelšanas darbības atsevišķā testa vidē.

Galvenie oficiālie avoti

Pārskats

Šajā vēsturiskajā eksperimentā tika palielināts vienlaicīgo pieprasījumu skaits, lai novērotu, kad konkrētā VPS vidē Apache HTTP Server sāk kļūdīties. Rezultāti raksturo tikai norādīto konfigurāciju un vienkāršo testa lapu.

Šajā lapā aplūkots tikai tīmekļa serveris Apache. Atsevišķā rakstā aprakstīts tests ar Apache un Tomcat kopā.

Apache un Tomcat slodzes tests VPS vidē: veiktspējas ierobežojumi un rezultāti

Satura rādītājs

  1. Mērījumi
  2. Sīkāka informācija par mērījumu rezultātiem
  3. Kopsavilkums

1. Mērījumi

1-1. Mērījumu vide

Testa vide bija šāda.

■ VPS informācija

CPU2 kodoli
Atmiņa1 GB
SSD50GB

■ Servera programmatūra

OSCentOS 7.4 64bit
Tīmekļa serverisApache HTTP Server 2.4.41

1-2. Mērīšanas metode

Slodze tika ģenerēta ar Java vidē darbināmo rīku JMeter. Vienlaicīgo pieprasījumu skaits tika pakāpeniski palielināts, līdz serveris tos vairs nespēja sekmīgi apstrādāt.

Testa nosacījumi bija šādi.

  • Pieprasījumu intervāls: 5 sekundes.
  • Sākotnējais vienlaicīgo pieprasījumu skaits: 10; katrā nākamajā mērījumā tas palielināts par 10.
  • Mērījuma ilgums: 60 sekundes.

Tā kā mērījums ilga 60 sekundes un intervāls bija 5 sekundes, katra virtuālā lietotāja darbība atkārtojās 12 reizes (60÷5).

1-3. Mērījumu rezultāti

Vispirms apkopoti toreizējā testa rezultāti pēc izmantotās VPS konfigurācijas.

CPU: 2core
memory: 1GB
SSD: 50GB
Vienlaikus var apstrādāt līdz 120 pieprasījumiem.

Šie skaitļi ir tikai novērojumi konkrētajā testa vidē. Tie nav garantēta jauda un nav tieši pārvēršami reālu lietotāju skaitā.

CPU: 1core
memory: 512MB
SSD: 25GB
Vienlaikus var apstrādāt līdz 60 pieprasījumiem.
CPU: 2core
memory: 1GB
SSD: 50GB
Vienlaikus var apstrādāt līdz 120 pieprasījumiem.
CPU: 3core
memory: 2GB
SSD: 100GB
Vienlaikus var apstrādāt līdz 240 pieprasījumiem.

Vēsturiskajā aprēķinā konfigurācijai "CPU: 1 kodols", "atmiņa: 512 MB" un "SSD: 25 GB" tika prognozēti aptuveni 60 vienlaicīgi pieprasījumi. Tas neapliecina, ka šāda sistēma bez problēmām apkalpos 60 reālus lietotājus.

2. Sīkāka informācija par mērījumu rezultātiem

Tālāk parādīti detalizētie novērojumi, uz kuriem balstīts iepriekšējais kopsavilkums.

2-1. WEB servera (Apache) mērījumi

Atkārtoti pieprasījumi tika sūtīti vienkāršai HTML lapai bez PHP apstrādes vai sarežģīta JavaScript.

Testā tika novēroti šādi rezultāti.

  • 10 vienlaicīgi pieprasījumi ⇒ OK
  • 20 vienlaicīgi pieprasījumi ⇒ OK
  • 30 vienlaicīgi pieprasījumi ⇒ OK
  • 40 vienlaicīgi pieprasījumi ⇒ OK
  • 50 vienlaicīgi pieprasījumi ⇒ OK
  • 60 vienlaicīgi pieprasījumi ⇒ OK
  • 70 vienlaicīgi pieprasījumi ⇒ OK
  • 80 vienlaicīgi pieprasījumi ⇒ OK
  • 90 vienlaicīgi pieprasījumi ⇒ OK
  • 100 vienlaicīgi pieprasījumi ⇒ OK
  • 110 vienlaicīgi pieprasījumi ⇒ OK
  • 120 vienlaicīgi pieprasījumi ⇒ OK
  • 130 vienlaicīgi pieprasījumi ⇒ kļūme

Pie 130 vienlaicīgiem pieprasījumiem radās Apache savienojuma kļūda. Servera stāvoklis tajā brīdī bija šāds.

  • CPU noslodze: 26%
  • Atmiņas izmantojums: 100%

Šajā testā pirmā novērotā vājā vieta bija atmiņas trūkums.

Apache Multi-Processing Module (MPM) nosaka procesu vai pavedienu pārvaldības modeli un vienlaicīgās apstrādes ierobežojumus. Izmantotā konfigurācija bija šāda.

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

MaxRequestWorkers vērtība bija "250". Tā ir konfigurācijas augšējā robeža vienlaicīgi apkalpotiem pieprasījumiem, nevis garantija, ka serverim pietiks CPU, atmiņas vai citu resursu visu 250 pieprasījumu apstrādei. Šajā novērojumā vienam procesam tika aptuveni attiecināti 8 MB atmiņas.

120 procesiem aprēķinātais patēriņš bija aptuveni 960 MB (8 MB × 120), tāpēc 1 GB serveris bija gandrīz sasniedzis atmiņas robežu, lai gan MaxRequestWorkers bija iestatīts uz "250".

Ja tajā pašā serverī darbojas arī PHP, Java vai citi pakalpojumi, Apache pieejamā atmiņa samazinās un slodzes robeža var būt zemāka.

Konkrētajā testā tikai ar Apache un konfigurāciju "CPU: 2 kodoli, atmiņa: 1 GB, SSD: 50 GB" kļūme pirmoreiz tika novērota virs 120 vienlaicīgiem pieprasījumiem.

2-2. Rezultātu interpretācija

Tā kā šajā testā atmiņa bija pirmā vājā vieta, sākotnējā rakstā tika veikts vienkāršots lineārs aprēķins dažādiem atmiņas apjomiem. Tas ir aptuvens pieņēmums: reālā slodzē procesu atmiņas patēriņš nav obligāti nemainīgs, un ierobežojumu var sasniegt CPU, tīkls vai cita komponente.

Pašreizējā konfigurācija (1 GB atmiņas)

  • Atmiņa: 1 GB
  • Apache procesi: 120
  • Aptuvenais atmiņas patēriņš vienam Apache procesam: 8 MB
  • Apache aprēķinātais atmiņas patēriņš: 960 MB (120 × 8 MB)

Vienkāršotais aprēķins 2 GB atmiņai

  • Atmiņa: 2 GB
  • Apache procesi: 240
  • Aptuvenais atmiņas patēriņš vienam Apache procesam: 8 MB
  • Apache aprēķinātais atmiņas patēriņš: 1920 MB (240 × 8 MB)

Lineārais aprēķins paredzētu aptuveni 240 procesus ar 2 GB atmiņas, taču tas nav izmērīts rezultāts. Pirms MaxRequestWorkers palielināšanas jāpārbauda procesa faktiskais atmiņas patēriņš, latentums, kļūdas un pārējie servera resursi.

Vienkāršotais aprēķins 512 MB atmiņai

  • Atmiņa: 512 MB
  • Apache procesi: 60
  • Aptuvenais atmiņas patēriņš vienam Apache procesam: 8 MB
  • Apache aprēķinātais atmiņas patēriņš: 480 MB (60 × 8 MB)

3. Kopsavilkums

Vēsturiskajā testā konkrētais Apache serveris ar 1 GB atmiņas apstrādāja līdz 120 vienlaicīgiem vienkāršās HTML lapas pieprasījumiem, bet pie 130 pieprasījumiem radās kļūme un atmiņas izmantojums sasniedza 100%.

Šo robežu nevar pārvērst lietotāju skaitā vai pārnest uz citu konfigurāciju. Jaudas plānošanai izveidojiet reprezentatīvu scenāriju, nosakiet latentuma un kļūdu sliekšņus un testēšanas laikā reģistrējiet servera puses metriku.