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 įrašomas vienas VPS eksperimentas, o ne universalus „Apache“ lygiagretumo apribojimas. Pajėgumas priklauso nuo atsakymo darbo, MPM, darbuotojų apribojimų, išlaikymo, TLS, procesoriaus, atminties, repozitorijos, tinklo, kliento paskirties vietos ir delsos tikslo, kurį apibrėžiate kaip priimtiną.
Ką išmoksite
- Kaip buvo surengtas pradinis testas ir ką jo stebimi skaičiai rodo ir ką nerodo.
- 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žinieriai, planuojantys pirmojo žingsnio žiniatinklio serverio eksperimentą mažame VPS.
2026 m. kontekstas: toliau pateikti matavimai yra išsaugoti iš pradinės autoriaus aplinkos ir nebuvo pakartotinai paleisti naudojant šį naujinimą. Nenaudokite jų kaip dabartinio pardavėjo etalono ar gamybos dydžio rekomendacijos; išbandykite savo taikomąją programą ir nesėkmių 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.
Išmatavau maksimalų atvejų skaičių, kurį žiniatinklio serveris ("Apache") gali apdoroti vienu metu, ir norėčiau parašyti apie rezultatus. Mums buvo įdomu, kiek daugiausia užklausų galima aptarnauti, todėl atlikome apklausą. Naudokite tai kaip nuorodą rinkdamiesi VPS serverio specifikacijas.
Šį kartą matavimai buvo atliekami tik WEB (Apache), tačiau toliau pateiktame straipsnyje aprašyti WEB ir AP serverių (Apache ir Tomcat) matavimai.
Turinys
1. matavimas
1-1. Matavimo aplinka
Toliau pateikiama aplinka, kurioje bus atliekami matavimai.
■Nuomos serverio informacija
| CPU | 2core |
|---|---|
| memory | 1GB |
| SSD | 50GB |
■Serverio informacija
| OS | CentOS 7.4 64bit |
|---|---|
| Žiniatinklio serveris | Apache HTTP Server 2.4.41 |
1-2. Matavimo metodas
Norėčiau tai išmatuoti naudodamas "JMeter". "JMeter" yra apkrovos matavimo įrankis, veikiantis "Java" kalba. Įrankis leidžia vienu metu išmesti daug užklausų. Naudodami "JMeter" norėtume palaipsniui didinti vienalaikių užklausų skaičių ir didinti apkrovą tol, kol nebegalėsime apdoroti duomenų.
Specifinės sąlygos.
- užklausos intervalas: 5 sek.
- Vienu metu pateiktų užklausų skaičius: 10 atvejų. (Matavimai palaipsniui didėjo po 10 atvejų.)
- Laiko matavimas: 60 sekundžių.
Matavimo laikas yra "60 sekundžių", o užklausos intervalas - "5 sekundės", todėl norite pakartotinai prisijungti prie sistemos 12 kartų (60÷5).
1-3. matavimo rezultatai
Galiausiai daugelį žmonių domina išvada, kokių specifikacijų serveris gali dirbti ir kiek jis gali dirbti, todėl pirmiausia norėčiau pateikti išvadą.
| CPU: 2core memory: 1GB SSD: 50GB | Vienu metu galima apdoroti iki 120 užklausų. |
|---|
Šio matavimo rezultatai parodė tai, kas išdėstyta pirmiau. Iš pirmiau pateiktų rezultatų galima daryti tokias išvadas. Rinkdamiesi serverio specifikacijas, pabandykite vadovautis šiuo kriterijumi.
| 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ų. |
Nustatyta, kad net ir su tokiomis specifikacijomis: "CPU: 1 branduolys", "atmintis: 512 MB" ir "SSD: 25 GB", maždaug 60 žmonių sistema gali veikti be problemų.
2. Išsami informacija apie matavimo rezultatus
Matavimo rezultatus aprašėme anksčiau, tačiau jei jus domina, kokius rezultatus aprašėme, taip pat peržiūrėkite matavimo rezultatų detales, kurios bus aprašytos ateityje.
2-1. WEB serverio (Apache) matavimai
Pasikartojančios užklausos buvo metamos į puslapius, sukurtus HTML formatu. Tai paprastas puslapis, kuriame nėra jokio sudėtingo PHP apdorojimo ar "JavaScript".
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
Klaida įvyko 130-oje byloje. Priežastis - ryšio su "Apache" klaida. Tuo metu serverio būklė buvo tokia.
- Procesoriaus apkrovimas: 26%
- atminties naudojimo lygis: 100%
Sunkumų kėlė visiškas atminties trūkumas.
Šiek tiek labiau išprususiems, "Apache Multi-Processing Module" (MPM) konfigūracija yra tokia. MPM paprasčiausiai paaiškinamas kaip nustatymas, kiek "Apache" leidžiama apdoroti lygiagrečiai.
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
Domina nustatymas "MaxRequestWorkers" - "250". Tai nustatymas, kiek daugiausia bylų "Apache" gali apdoroti vienu metu. '250', todėl maksimaliai lygiagrečiai buvo galima apdoroti 250 atvejų, tačiau žiūrint į atminties naudojimą, vienam atvejui buvo naudojama apie 8 MB atminties.
Atrodė, kad jis naudoja 960 MB atminties (8M x 120 procesų), o nustatymo reikšmė buvo "250", tačiau atrodė, kad neįmanoma sukurti daugiau nei "120" procesų.
Pastaba: Serverio atmintis beveik pasiekė 1G ribą.
Iš tikrųjų veikiant serveriui, jei į jį taip pat įtrauktos PHP ir "Java", riba yra apie 100 atvejų, o jei yra vietos, vienu metu lygiagrečiai galima apdoroti 80 atvejų.
Įdiegus ir paleidus tik "Apache" su specifikacijomis "CPU: 2core, memory: 1GB, SSD: 50GB", nustatyta, kad vienalaikių prieigų skaičius "120" yra riba.
2-2. svarstymas
Toliau tai tampa svarstymu, bet kadangi atmintis yra siauras kaklelis, pakeitus atmintį, padidės ir vienu metu apdorojamų procesų skaičius.
(Dalyvauja. (memory1GB))
- memory: 1GB
- "Apache" gijų skaičius: 120 atvejų
- Atminties suvartojimas vienam "Apache" srautui: 8MB
- "Apache" atminties suvartojimas: 960MB (120 atvejų×8MB)
(po pakeitimo (memory2GB))
- memory: 2GB
- "Apache" gijų skaičius: 240 atvejų.
- Atminties suvartojimas vienam "Apache" srautui: 8MB
- "Apache" atminties suvartojimas: 1920MB (240 atvejų.×8MB)
Padidinus atmintį iki 2 GB, galima padvigubinti bylų skaičių iki maždaug 240 vienu metu. Padidinus atmintį iki 3 GB, atrodo, kad vienu metu galima apdoroti daugiau duomenų, tačiau "Apache" MPM "MaxRequestWorkers (didžiausias vienu metu apdorojamų atvejų skaičius)" yra "250", todėl, dar labiau padidinus atmintį, čia taip pat reikės atlikti derinimą. Ir atvirkščiai, jei atmintis būtų sumažinta perpus, ji būtų tokia.
(po pakeitimo (memory512GB))
- memory: 512GB
- "Apache" gijų skaičius: 60 atvejų.
- Atminties suvartojimas vienam "Apache" srautui: 8MB
- "Apache" atminties suvartojimas: 480MB (60 atvejų.×8MB)
3. santrauka
Išmatavome didžiausią atvejų skaičių, kurį žiniatinklio serveris ("Apache") gali apdoroti vienu metu. Nustatyta, kad sistema, kurioje dirba apie 60 žmonių, gali be problemų veikti su "CPU: 1core", "memory: 512MB" ir "SSD: 25GB".
Tyrimas grindžiamas prielaida, kad jokia kita programinė įranga neveikia ribinio našumo režimu. Rekomenduojama pasirinkti specifikaciją su tam tikra laisve, nes tai yra ribinė vertė.
Dėkojame, kad žiūrėjote iki pabaigos.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai