Apache HTTP serverio apkrovos testas mažame VPS: metodas ir rezultatai


Paskelbimo data:

Atnaujinta:


Techniniai straipsniai > Apache HTTP serverio apkrovos testas mažame VPS: metodas ir rezultatai

2026 m. būsena ir saugus naudojimas

Išvada: šiame straipsnyje aprašytas vienas istorinis VPS bandymas, o ne universali Apache lygiagretumo riba. Pajėgumas priklauso nuo atsakymo sudėtingumo, MPM procesų ar gijų ribų, KeepAlive, TLS, procesoriaus, atminties, disko, tinklo, apkrovos generatoriaus vietos ir priimtinos delsos.

Ką išmoksite

  • Kaip buvo atliktas pradinis bandymas ir ką jo skaičiai leidžia bei neleidžia teigti.
  • Kokios „Apache“ ir operacinės sistemos metrikos padeda nustatyti pirmąją kliūtį.
  • Kaip sukurti pakartojamą apkrovos testą su įšilimu, procentiliais, klaidomis ir serverio telemetrija.

Kam tai skirta: inžinieriams, planuojantiems pirmąjį žiniatinklio serverio apkrovos bandymą mažame VPS.

2026 m. kontekstas: toliau pateikti matavimai išsaugoti iš pradinės autoriaus aplinkos ir šio atnaujinimo metu nebuvo pakartoti. Nelaikykite jų dabartiniu paslaugų teikėjo etalonu ar gamybinio dydžio rekomendacija; bandykite savo programą pagal aiškius delsos ir klaidų slenksčius.

Saugos pastaba: pradiniame straipsnyje pateiktos komandos ir konfigūracijos pavyzdžiai nebuvo pakartotinai vykdomi dabartinėje gamybos aplinkoje. Prieš taikydami, patikrinkite palaikomas versijas, atsargines kopijas, prieigos valdiklius ir atšaukimo veiksmus atskiroje bandymo aplinkoje.

Pagrindiniai oficialūs šaltiniai

Apžvalga

Šiame istoriniame bandyme stebėta, kiek lygiagrečių užklausų nedidelėje VPS aplinkoje aptarnavo Apache HTTP Server. Rezultatai apibūdina tik šią konfigūraciją ir nėra bendroji VPS dydžio parinkimo taisyklė.

Atskiras straipsnis aprašo dviejų pakopų Apache ir Tomcat bandymą:

Apache ir Tomcat apkrovos bandymas VPS aplinkoje

Turinys

  1. Matavimas
  2. Išsami informacija apie matavimo rezultatus
  3. Santrauka

1. Matavimas

1-1. Matavimo aplinka

Bandymas atliktas šioje aplinkoje.

■ VPS informacija

CPU2core
memory1GB
SSD50GB

■ Programinės įrangos informacija

OSCentOS 7.4 64bit
Žiniatinklio serverisApache HTTP Server 2.4.41

1-2. Matavimo metodas

Apkrova generuota Java pagrindu veikiančiu JMeter. Lygiagrečių naudotojų skaičius didintas po 10, kol bandymo scenarijus pradėjo fiksuoti klaidas.

Bandymo sąlygos:

  • užklausų intervalas: 5 sek.;
  • lygiagrečių naudotojų skaičius: didinamas po 10;
  • vieno matavimo trukmė: 60 sekundžių.

Esant 60 sekundžių trukmei ir 5 sekundžių intervalui, kiekvienas naudotojas scenarijų pakartojo 12 kartų.

1-3. Matavimo rezultatai

Pradinėje 2 branduolių ir 1 GB atminties aplinkoje bandymo scenarijus pasiekė šį rezultatą:

CPU: 2core
memory: 1GB
SSD: 50GB
120 lygiagrečių užklausų scenarijus baigtas be užfiksuotos klaidos.

Toliau pateikta lentelė buvo pirminio straipsnio apytikslė ekstrapoliacija. Kitos VPS konfigūracijos faktiškai nebuvo išmatuotos, todėl šių skaičių nenaudokite pajėgumui prognozuoti.

CPU: 1core
memory: 512MB
SSD: 25GB
Vienu metu galima apdoroti iki 60 užklausų.
CPU: 2core
memory: 1GB
SSD: 50GB
Vienu metu galima apdoroti iki 120 užklausų.
CPU: 3core
memory: 2GB
SSD: 100GB
Vienu metu galima apdoroti iki 240 užklausų.

Iš vieno bandymo negalima pagrįstai teigti, kad 1 branduolio, 512 MB atminties ir 25 GB SSD sistema be problemų aptarnaus 60 naudotojų. Tam reikia atskiro bandymo su tikru programos profiliu ir delsos kriterijais.

2. Išsami informacija apie matavimo rezultatus

Toliau pateikiami išsamesni pradinio bandymo stebėjimai.

2-1. WEB serverio (Apache) matavimai

Pakartotinės užklausos siųstos į paprastą statinį HTML puslapį be PHP apdorojimo ar JavaScript vykdymo serveryje.

Atlikus matavimus gauti tokie rezultatai.

  • 10 užklausų vienu metu⇒OK
  • 20 užklausų vienu metu⇒OK
  • 30 užklausų vienu metu⇒OK
  • 40 užklausų vienu metu⇒OK
  • 50 užklausų vienu metu⇒OK
  • 60 užklausų vienu metu⇒OK
  • 70 užklausų vienu metu⇒OK
  • 80 užklausų vienu metu⇒OK
  • 90 užklausų vienu metu⇒OK
  • 100 vienalaikių užklausų⇒OK
  • 110 vienalaikių užklausų⇒OK
  • 120 užklausų vienu metu⇒OK
  • 130 vienalaikių užklausų⇒NG

Esant 130 lygiagrečių užklausų bandymo scenarijui užfiksuota ryšio su Apache klaida. Tuo metu stebėta:

  • procesoriaus apkrova: 26 %;
  • atminties naudojimas: 100 %.

Šie rodmenys leidžia įtarti atminties trūkumą, tačiau tiksliai priežasčiai patvirtinti reikėtų proceso, apsikeitimo atminties, klaidų žurnalų ir delsos metrikų.

Apache Multi-Processing Module (MPM) nustato, kaip kuriami procesai ar gijos ir kiek užklausų gali būti vykdoma lygiagrečiai.

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

MaxRequestWorkers reikšmė buvo 250, tačiau tai tik konfigūracijos viršutinė riba, o ne garantuotas pajėgumas. Iš stebėtų skaičių apytiksliai apskaičiuota apie 8 MB vienam Apache procesui.

120 procesų po maždaug 8 MB sudarytų apie 960 MB, todėl 1 GB VPS nebeliko pakankamos atsargos. Tai apytikslis skaičiavimas, o ne tikslus vienos užklausos atminties matas.

Pridėjus PHP, Java ar kitų paslaugų, laisvos atminties sumažėtų, tačiau konkrečios 80 ar 100 užklausų ribos be atskiro bandymo nustatyti negalima.

Šioje konkrečioje 2 branduolių, 1 GB atminties ir 50 GB SSD aplinkoje 120 lygiagrečių užklausų scenarijus dar baigtas be užfiksuotos klaidos, o 130 užklausų scenarijus jau pateikė klaidą.

2-2. Rezultatų aptarimas

Atmintis šiame bandyme galėjo būti pirmasis ribojantis išteklius, tačiau vien padidinus jos kiekį našumas nebūtinai didėja tiesiškai: ribą gali lemti ir CPU, tinklas, MPM, TLS ar pati programa.

Pradinė aplinka (1 GB atminties)

  • memory: 1GB
  • "Apache" gijų skaičius: 120
  • Atminties suvartojimas vienai "Apache" gijai: 8 MB
  • "Apache" atminties suvartojimas: 960 MB (120 × 8 MB)

Hipotetinė aplinka po pakeitimo (2 GB atminties)

  • memory: 2GB
  • "Apache" gijų skaičius: 240
  • Atminties suvartojimas vienai "Apache" gijai: 8 MB
  • "Apache" atminties suvartojimas: 1920 MB (240 × 8 MB)

240 lygiagrečių užklausų skaičius yra tik tiesinė ekstrapoliacija, o ne išmatuotas rezultatas. Padidinus atmintį būtina pakartoti bandymą ir stebėti kitas ribas; MaxRequestWorkers taip pat reikia derinti pagal pasirinktą MPM ir realų procesų ar gijų atminties naudojimą.

Hipotetinė aplinka sumažinus atmintį (512 MB)

  • memory: 512MB
  • "Apache" gijų skaičius: 60
  • Atminties suvartojimas vienai "Apache" gijai: 8 MB
  • "Apache" atminties suvartojimas: 480 MB (60 × 8 MB)

3. Santrauka

Pradiniame bandyme 1 GB VPS su statiniu HTML puslapiu 120 lygiagrečių užklausų scenarijus dar baigtas be užfiksuotos klaidos, o ties 130 užklausų scenarijumi užfiksuota klaida ir 100 % atminties naudojimas.

Šio rezultato negalima tiesiogiai perkelti kitai programai ar VPS konfigūracijai. Pajėgumą nustatykite pakartojamu bandymu, stebėdami delsos procentilius, klaidas ir serverio išteklius bei palikdami gamybinę atsargą.