Išmatavau didžiausią atvejų skaičių, kurį žiniatinklio serveris ("Apache") gali apdoroti vienu metu, naudodamas VPS nuomos serverį.


Paskelbimo data:2020 m. gruodžio 31 d.



INFOMARTION > Išmatavau didžiausią atvejų skaičių, kurį žiniatinklio serveris ("Apache") gali apdoroti vienu metu, naudodamas VPS nuomos serverį.

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.

Išmatavau, kiek daugiausiai WEB/AP serverių ("Apache" ir "Tomcat") gali veikti vienu metu naudojant VPS nuomojamą serverį.

Turinys

  1. matavimas
  2. Išsami informacija apie matavimo rezultatus
  3. santrauka

1. matavimas

1-1. Matavimo aplinka

Toliau pateikiama aplinka, kurioje bus atliekami matavimai.

■Nuomos serverio informacija

CPU2core
memory1GB
SSD50GB

■Serverio informacija

OSCentOS 7.4 64bit
Žiniatinklio serverisApache 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ų.
※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.