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


Paskelbimo data:2021 m. sausio 1 d.



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

Apžvalga.

Išmatavau maksimalų atvejų skaičių, kurį WEB/AP serveriai ("Apache" ir "Tomcat") 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 atlikti WEB ir AP serveriuose ("Apache" ir "Tomcat"), tačiau toliau pateiktame straipsnyje rasite tik WEB ("Apache") matavimus.

Išmatavau didžiausią atvejų skaičių, kurį žiniatinklio serveris ("Apache") gali apdoroti vienu metu, naudodamas VPS nuomos 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
AP serverisApache Tomcat 9.0.27
DB serverisPostgreSQL 10.2
JavaOpenJDK 11

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 rezultatas

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 80 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 20 užklausų.
CPU:2core
memory:1GB
SSD:50GB
Vienu metu galima apdoroti iki 80 užklausų
CPU:3core
memory:2GB
SSD:100GB
Vienu metu galima apdoroti iki 200 užklausų.

Buvo nustatyta, kad maždaug 20 naudotojų dydžio sistema veiktų be problemų su "CPU: 1core", "memory: 512MB" ir "SSD: 25GB".

2. Išsami informacija apie matavimo rezultatus

Matavimo rezultatus aprašėme anksčiau, tačiau jei jus domina, kokius rezultatus aprašėme, taip pat susipažinkite su išsamia matavimo rezultatų informacija, kuri bus aprašyta ateityje.

2-1. WEB/AP serverio (Apache, Tomcat) matavimai

Užklausa buvo išmesta, kai naudotojas prisijungia iš prisijungimo ekrano, o prisijungus rodomas sąrašo ekranas. Beje, ekranas sukurtas naudojant "Spring" sistemą, įskaitant autentifikavimo funkciją.

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⇒NG

Klaida įvyko ties 90-uoju atveju. Priežastis - ryšio su "Apache" klaida. Tuo metu serverio būklė buvo tokia.

  • Procesoriaus apkrovimas・・・26%
  • atminties panaudojimas・・・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 "Java" naudoja 320 MB atminties (248M kaupui ir 72M metapasauliui), o "Apache" - 640 MB atminties (8M x 80 procesų), ir nors "Apache" MPM nustatymo reikšmė yra "250", atrodė, kad ji negali sukurti daugiau nei "80" procesų.
※Serveryje yra 1G atminties, todėl bendra "Apache" ir "Java" atmintis yra 960 MB, t. y. beveik ties viršutine riba.

AP serveris (Java pusė) veikė gerai, todėl kliūtis buvo WEB serveris (Apache).

Įdiegus ir paleidus "Apache" ir "Tomcat", nustatėme, kad su specifikacijomis "CPU: 2core, memory: 1GB, SSD: 50GB" vienalaikių prieigų skaičius "80" yra riba.(Daroma prielaida, kad "Java" atminties nustatymai yra 248M kaupui ir 72M metapasauliui.)

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:80 atvejų.
  • Atminties suvartojimas vienam "Apache" srautui:8MB
  • "Apache" atminties suvartojimas:640MB(80 atvejų.×8MB)
  • "Tomcat" atminties suvartojimas:320MB(248 mln. eurų HEAP.、72 m metapasauliui.)
  • "Apache+Tomcat" atminties sąnaudos:960MB

【po pakeitimo(memory2GB)】

  • memory:2GB
  • "Apache" gijų skaičius:200 dėžių
  • Atminties suvartojimas vienam "Apache" srautui:8MB
  • "Apache" atminties suvartojimas:1600MB(200 dėžių×8MB)
  • "Tomcat" atminties suvartojimas:320MB(248 mln. eurų HEAP.、72 m metapasauliui.)
  • "Apache+Tomcat" atminties sąnaudos:1920MB

Turint 2 GB atminties, vienu metu galima apdoroti 200 bylų. 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ą. Taip pat gali prireikti "Java" atminties derinimo. Ir atvirkščiai, jei atmintis būtų sumažinta perpus, ji būtų tokia.

【po pakeitimo(memory512GB)】

  • memory:512GB
  • "Apache" gijų skaičius:20 atvejų
  • Atminties suvartojimas vienam "Apache" srautui:8MB
  • "Apache" atminties suvartojimas:160MB(20 atvejų×8MB)
  • "Tomcat" atminties suvartojimas:320MB(248 mln. eurų HEAP.、72 m metapasauliui.)
  • "Apache+Tomcat" atminties sąnaudos:480MB

3. santrauka

Aprašomi didžiausio atvejų, kuriuos WEB/AP serveriai (Apache ir Tomcat) gali apdoroti vienu metu, skaičiaus matavimo rezultatai. Buvo nustatyta, kad maždaug 20 naudotojų dydžio sistema veiktų be problemų 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.