Es izmērīju maksimālo WEB/AP serveru (Apache un Tomcat) skaitu, ko var apstrādāt vienlaicīgi, izmantojot VPS nomas serveri.


Publikācijas datums:2021. gada 1. janvāris.



INFOMARTION > Es izmērīju maksimālo WEB/AP serveru (Apache un Tomcat) skaitu, ko var apstrādāt vienlaicīgi, izmantojot VPS nomas serveri.

Pārskats.

Esmu izmērījis maksimālo gadījumu skaitu, ko WEB/AP serveri (Apache un Tomcat) var apstrādāt vienlaicīgi, un vēlos uzrakstīt par rezultātiem. Mēs interesējāmies par maksimālo apkalpojamo pieprasījumu skaitu, tāpēc veicām aptauju. Izmantojiet to kā atsauci, izvēloties VPS servera specifikācijas.

Šoreiz mērījumi tika veikti ar WEB/AP serveriem (Apache un Tomcat), bet tālāk rakstā ir sniegta informācija par mērījumiem tikai ar WEB (Apache) serveri.

Es izmērīju maksimālo gadījumu skaitu, ko tīmekļa serveris (Apache) var apstrādāt vienlaicīgi, izmantojot VPS nomas serveri.

Satura rādītājs

  1. mērījumi
  2. Detalizēta informācija par mērījumu rezultātiem
  3. kopsavilkums

1. mērījumi

1-1. Mērījumu vide

Vide, kurā tiks veikti mērījumi, ir šāda.

■Nomas servera informācija

CPU2core
memory1GB
SSD50GB

■Servera informācija

OSCentOS 7.4 64bit
Tīmekļa serverisApache HTTP Server 2.4.41
AP serverisApache Tomcat 9.0.27
DB serverisPostgreSQL 10.2
JavaOpenJDK 11

1-2. Mērīšanas metode

Es gribētu to izmērīt, izmantojot JMeter. JMeter ir slodzes mērīšanas rīks, kas darbojas Java vidē. Šis rīks ļauj vienlaicīgi izpildīt lielu skaitu pieprasījumu. Mēs vēlamies pakāpeniski palielināt vienlaicīgo pieprasījumu skaitu, izmantojot JMeter, un palielināt slodzi, līdz apstrādi vairs nevar apstrādāt.

Īpašie nosacījumi ir šādi.

  • pieprasījuma intervāls・・・5 sek.
  • Vienlaicīgu pieprasījumu skaits・・・10 gadījumi.(Mērījumus pakāpeniski palielināja par 10 gadījumiem katrā.)
  • Laika mērīšana・・・60 sekundes.

Mērīšanas laiks ir "60 sekundes" un pieprasījuma intervāls "5 sekundes", tāpēc jūs vēlaties atkārtoti piekļūt sistēmai 12 reizes (60÷5).

1-3. mērījumu rezultāts

Galu galā daudzus cilvēkus interesē secinājums par to, kādas specifikācijas serveris var apstrādāt un cik daudz tas var apstrādāt, tāpēc es vēlētos vispirms izklāstīt secinājumu.

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

Šī mērījuma rezultāti parādīja iepriekš minēto. No iepriekšminētajiem rezultātiem var secināt sekojošo. Mēģiniet to izmantot kā kritēriju, izvēloties servera specifikācijas.

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

Tika konstatēts, ka sistēma ar aptuveni 20 lietotāju lielumu darbosies bez problēmām ar "CPU: 1core", "memory: 512MB" un "SSD: 25GB".

2. Detalizēta informācija par mērījumu rezultātiem

Mērījumu rezultātus esam aprakstījuši iepriekš, bet, ja jūs interesē, kādus rezultātus esam aprakstījuši, lūdzu, pārbaudiet arī sīkāku informāciju par mērījumu rezultātiem, kas tiks aprakstīti turpmāk.

2-1. WEB/AP servera (Apache, Tomcat) mērījumi

Pieprasījums tika izmests scenārijā, kad lietotājs piesakās no pieteikšanās ekrāna un pēc pieteikšanās tiek parādīts saraksta ekrāns. Starp citu, ekrāns ir izveidots, izmantojot Spring ietvaru, tostarp autentifikācijas funkciju.

Mērījumi parādīja šādus rezultātus.

  • 10 vienlaicīgiem pieprasījumiem⇒OK
  • Par 20 vienlaicīgiem pieprasījumiem⇒OK
  • 30 vienlaicīgiem pieprasījumiem⇒OK
  • Par 40 vienlaicīgiem pieprasījumiem⇒OK
  • 50 vienlaicīgiem pieprasījumiem⇒OK
  • Par 60 vienlaicīgiem pieprasījumiem⇒OK
  • 70 vienlaicīgiem pieprasījumiem⇒OK
  • 80 vienlaicīgiem pieprasījumiem⇒OK
  • 90 vienlaicīgiem pieprasījumiem⇒NG

Kļūda pie 90. gadījuma. Cēlonis bija savienojuma kļūda ar Apache. Servera stāvoklis šajā laikā bija šāds.

  • Procesora noslodze・・・26%
  • atmiņas izmantošana・・・100%

Šķērslis bija pilnīgs atmiņas trūkums.

Nedaudz lieliskākiem interesentiem Apache Multi-Processing Module (MPM) konfigurācija ir šāda. MPM ir vienkārši izskaidrojams kā iestatījums, cik daudz Apache ir atļauts apstrādāt paralēli.

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

Interesējošais "MaxRequestWorkers" iestatījums ir "250". Tas ir iestatījums maksimālajam lietu skaitam, ko Apache var apstrādāt vienlaicīgi. '250', tātad maksimāli paralēli varēja apstrādāt 250 gadījumus, bet, aplūkojot atmiņas izmantošanu, katram gadījumam tika izmantoti aptuveni 8 MB atmiņas.

Šķita, ka Java izmanto 320MB atmiņas (248M par kaudzes un 72M par metaspace) un Apache 640MB atmiņas (8M x 80 procesi), un, lai gan Apache MPM iestatījumu vērtība ir "250", šķita, ka tas nevarēja izveidot vairāk nekā "80" procesus.
※Serverī ir 1G atmiņas, tātad kopējā Apache un Java atmiņa ir 960 MB, kas ir gandrīz uz augšējās robežas.

AP serveris (Java puse) darbojās labi, tāpēc vājā vieta bija WEB serveris (Apache).

Kad Apache un Tomcat ir instalēti un darbojas, mēs konstatējām, ka ar specifikācijām "CPU: 2core, atmiņa: 1GB, SSD: 50GB", vienlaicīgas piekļuves skaits "80" ir limits.(Tiek pieņemts, ka Java atmiņas iestatījumi ir 248M kaudzītei un 72M metaplašai.)

2-2. apsvērumi

No šejienes tas kļūst par apsvērumu, bet, tā kā atmiņa ir šaurais kakls, ja atmiņa tiek mainīta, palielināsies arī vienlaicīgi apstrādājamo procesu skaits.

【Klātesošie.(memory1GB)】

  • memory:1GB
  • Apache pavedienu skaits:80 gadījumi.
  • Atmiņas patēriņš uz pavedienu Apache.:8MB
  • Apache atmiņas patēriņš:640MB(80 gadījumi.×8MB)
  • Tomcat atmiņas patēriņš:320MB(248 miljoni eiro HEAP.、72m metavietai.)
  • Apache+Tomcat atmiņas patēriņš:960MB

【pēc izmaiņām(memory2GB)】

  • memory:2GB
  • Apache pavedienu skaits:200 gadījumi
  • Atmiņas patēriņš uz pavedienu Apache.:8MB
  • Apache atmiņas patēriņš:1600MB(200 gadījumi×8MB)
  • Tomcat atmiņas patēriņš:320MB(248 miljoni eiro HEAP.、72m metavietai.)
  • Apache+Tomcat atmiņas patēriņš:1920MB

Izmantojot 2 GB atmiņas, var būt iespējams vienlaicīgi apstrādāt 200 lietas. Ja atmiņa tiek palielināta līdz 3 GB, šķiet, ka var veikt lielāku vienlaicīgu apstrādi, taču Apache MPM "MaxRequestWorkers (maksimālais vienlaicīgi apstrādājamo lietu skaits)" ir "250", tāpēc, ja atmiņa tiks palielināta vēl vairāk, būs nepieciešams veikt arī šo iestatījumu. Var būt nepieciešama arī Java atmiņas regulēšana. Un otrādi, ja atmiņa tiek samazināta uz pusi, tas būtu šādi.

【pēc izmaiņām(memory512GB)】

  • memory:512GB
  • Apache pavedienu skaits:20 gadījumi
  • Atmiņas patēriņš uz pavedienu Apache.:8MB
  • Apache atmiņas patēriņš:160MB(20 gadījumi×8MB)
  • Tomcat atmiņas patēriņš:320MB(248 miljoni eiro HEAP.、72m metavietai.)
  • Apache+Tomcat atmiņas patēriņš:480MB

3. kopsavilkums

Aprakstīti rezultāti, kas iegūti, mērot maksimālo gadījumu skaitu, ko WEB/AP serveri (Apache un Tomcat) var apstrādāt vienlaicīgi. Tika konstatēts, ka sistēma ar aptuveni 20 lietotāju lielumu darbosies bez problēmām ar "CPU: 1core", "memory: 512MB" un "SSD: 25GB".

Apsekojuma pamatā ir pieņēmums, ka neviena cita programmatūra nedarbojas ar minimālu veiktspēju. Ieteicams izvēlēties specifikāciju ar nelielu rezervi, jo tā ir robežvērtība.

Paldies, ka noskatījāties līdz beigām.