Mittasin, kuinka monta WEB/AP-palvelinta (Apache ja Tomcat) voi käsitellä samanaikaisesti VPS-vuokrauspalvelimella.


Julkaisupäivä:1. tammikuuta 2021.



INFOMARTION > Mittasin, kuinka monta WEB/AP-palvelinta (Apache ja Tomcat) voi käsitellä samanaikaisesti VPS-vuokrauspalvelimella.

Yleiskatsaus.

Olen mitannut, kuinka monta tapausta WEB/AP-palvelimet (Apache ja Tomcat) voivat käsitellä samanaikaisesti, ja haluaisin kirjoittaa tuloksista. Olimme uteliaita palvelupyyntöjen enimmäismäärästä, joten teimme kyselyn. Käytä tätä viitteenä valitessasi VPS-palvelimen spesifikaatioita.

Tällä kertaa mittaukset suoritettiin WEB/AP-palvelimilla (Apache ja Tomcat), mutta katso alla oleva artikkeli, joka koskee mittauksia vain WEB-palvelimilla (Apache).

Mittasin maksimimäärän tapauksia, joita verkkopalvelin (Apache) voi käsitellä samanaikaisesti VPS-vuokrauspalvelimella.

Sisällysluettelo

  1. mittaus
  2. Mittaustulosten yksityiskohdat
  3. yhteenveto

1. mittaus

1-1. Mittausympäristö

Seuraavassa esitetään ympäristö, jossa mittaukset tehdään.

■Vuokrauspalvelimen tiedot

CPU2core
memory1GB
SSD50GB

■Palvelimen tiedot

OSCentOS 7.4 64bit
VerkkopalvelinApache HTTP Server 2.4.41
AP-palvelinApache Tomcat 9.0.27
DB-palvelinPostgreSQL 10.2
JavaOpenJDK 11

1-2. Mittausmenetelmä

Haluaisin mitata tämän JMeterin avulla. JMeter on kuormituksen mittaustyökalu, joka toimii Javassa. Työkalu mahdollistaa useiden pyyntöjen esittämisen samanaikaisesti. Haluaisimme asteittain lisätä samanaikaisten pyyntöjen määrää JMeterin avulla ja lisätä kuormitusta, kunnes käsittelyä ei voida enää hoitaa.

Erityisolosuhteisiin kuuluvat.

  • pyyntöväli・・・5 sekuntia.
  • Samanaikaisten pyyntöjen määrä・・・10 tapausta.(Mittaukset lisääntyivät vähitellen 10 tapauksella kutakin.)
  • Ajan mittaaminen・・・60 sekuntia.

Mittausaika on "60 sekuntia" ja pyyntöväli "5 sekuntia", joten haluat käyttää järjestelmää 12 kertaa (60÷5) toistuvasti.

1-3. mittaustulos

Loppujen lopuksi monia ihmisiä kiinnostaa päätelmä siitä, mitä speksejä palvelin pystyy käsittelemään ja kuinka paljon se pystyy käsittelemään, joten haluaisin esittää päätelmän ensin.

CPU:2core
memory:1GB
SSD:50GB
Jopa 80 samanaikaista pyyntöä voidaan käsitellä

Tämän mittauksen tulokset osoittivat edellä esitetyn. Edellä esitettyjen tulosten perusteella voidaan päätellä seuraavaa. Yritä käyttää tätä kriteerinä, kun valitset palvelimen spesifikaatioita.

CPU:1core
memory:512MB
SSD:25GB
Enintään 20 samanaikaista pyyntöä voidaan käsitellä.
CPU:2core
memory:1GB
SSD:50GB
Jopa 80 samanaikaista pyyntöä voidaan käsitellä
CPU:3core
memory:2GB
SSD:100GB
Jopa 200 samanaikaista pyyntöä voidaan käsitellä.

Todettiin, että järjestelmä, jonka koko on noin 20 käyttäjää, toimii ongelmitta seuraavilla asetuksilla: "CPU: 1core", "muisti: 512MB" ja "SSD: 25GB".

2. Mittaustulosten yksityiskohdat

Olemme kuvailleet mittaustuloksia aiemmin, mutta jos olet kiinnostunut siitä, millaisia tuloksia olemme kuvailleet, tutustu myös mittaustulosten yksityiskohtiin, jotka kuvataan tulevaisuudessa.

2-1. WEB/AP-palvelin (Apache, Tomcat) mittaukset

Pyyntö heitetään skenaariossa, jossa käyttäjä kirjautuu sisään kirjautumisnäytöltä ja kirjautumisen jälkeen näytetään luettelonäyttö. Näyttö on muuten rakennettu käyttäen Spring-kehystä, mukaan lukien todennustoiminto.

Mittaukset osoittivat seuraavat tulokset.

  • 10 samanaikaista pyyntöä varten⇒OK
  • 20 samanaikaista pyyntöä varten⇒OK
  • 30 samanaikaista pyyntöä varten⇒OK
  • 40 samanaikaista pyyntöä varten⇒OK
  • 50 samanaikaista pyyntöä varten⇒OK
  • 60 samanaikaista pyyntöä varten⇒OK
  • 70 samanaikaista pyyntöä varten⇒OK
  • 80 samanaikaista pyyntöä varten⇒OK
  • 90 samanaikaista pyyntöä varten⇒NG

Virhe tapahtui 90. tapauksessa. Syynä oli yhteysvirhe Apacheen. Palvelimen tila oli tällä hetkellä seuraava.

  • CPU:n käyttöaste・・・26%
  • muistin käyttö・・・100%

Pullonkaulana oli muistin täydellinen puute.

Hieman nörttimäisemmille Apachen moniprosessorimoduulin (MPM) kokoonpano on seuraava. MPM selitetään yksinkertaisesti asetuksena, jolla määritetään, kuinka paljon Apachen sallitaan käsitellä rinnakkain.

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

Kiinnostava asetus on "MaxRequestWorkers" -asetukseksi "250". Tämä on asetus sille, kuinka monta tapausta Apache voi käsitellä samanaikaisesti. '250', joten 250 tapausta voitiin käsitellä maksimissaan rinnakkain, mutta muistinkäyttöä tarkasteltaessa muistia käytettiin noin 8 Mt tapausta kohti.

Java näytti käyttävän 320 megatavua muistia (248 megatavua kasaan ja 72 megatavua metatilaan) ja Apache 640 megatavua muistia (8 megatavua x 80 prosessia), ja vaikka Apachen MPM-asetusarvo on '250', näytti siltä, että se ei voinut luoda enempää kuin '80' prosessia.
※Palvelimessa on 1G muistia, joten Apachen ja Javan kokonaismuisti on 960MB, mikä on melkein ylärajalla.

AP-palvelin (Java-puoli) toimi hyvin, joten pullonkaulana oli WEB-palvelin (Apache).

Kun Apache ja Tomcat on asennettu ja käynnissä, havaitsimme, että määrityksillä "CPU: 2core, muisti: 1GB, SSD: 50GB" samanaikaisten käyttökertojen määrä "80" on raja.(Oletuksena on, että Javan muistiasetukset ovat 248M kasalle ja 72M metatilalle.)

2-2. vastike

Tästä eteenpäin se tulee harkittavaksi, mutta koska muisti on pullonkaula, jos muistia muutetaan, samanaikaisesti käsiteltävien prosessien määrä kasvaa.

【Läsnä.(memory1GB)】

  • memory:1GB
  • Apache-säikeiden määrä:80 tapausta.
  • Muistin kulutus säikeittäin Apachessa.:8MB
  • Apachen muistin kulutus:640MB(80 tapausta.×8MB)
  • Tomcatin muistin kulutus:320MB(248 miljoonaa euroa HEAP-ohjelmalle.、72 m metatilan osalta.)
  • Apachen+Tomcatin muistin kulutus:960MB

【muutoksen jälkeen(memory2GB)】

  • memory:2GB
  • Apache-säikeiden määrä:200 tapausta
  • Muistin kulutus säikeittäin Apachessa.:8MB
  • Apachen muistin kulutus:1600MB(200 tapausta×8MB)
  • Tomcatin muistin kulutus:320MB(248 miljoonaa euroa HEAP-ohjelmalle.、72 m metatilan osalta.)
  • Apachen+Tomcatin muistin kulutus:1920MB

Kun muistia on 2 Gt, voi olla mahdollista käsitellä 200 tapausta samanaikaisesti. Jos muistia lisätään 3 Gt:iin, näyttää siltä, että samanaikaista käsittelyä voidaan tehdä enemmän, mutta Apachen MPM:n "MaxRequestWorkers (samanaikaisesti käsiteltävien tapausten enimmäismäärä)" on "250", joten viritys on tarpeen myös tässä tapauksessa, jos muistia lisätään edelleen. Myös Java-muistin viritys voi olla tarpeen. Vastaavasti, jos muisti puolitetaan, tilanne on seuraava.

【muutoksen jälkeen(memory512GB)】

  • memory:512GB
  • Apache-säikeiden määrä:20 tapausta
  • Muistin kulutus säikeittäin Apachessa.:8MB
  • Apachen muistin kulutus:160MB(20 tapausta×8MB)
  • Tomcatin muistin kulutus:320MB(248 miljoonaa euroa HEAP-ohjelmalle.、72 m metatilan osalta.)
  • Apachen+Tomcatin muistin kulutus:480MB

3. yhteenveto

Tulokset, jotka saatiin mitattaessa WEB/AP-palvelimien (Apache ja Tomcat) samanaikaisesti käsittelemien tapausten enimmäismäärää, kuvataan. Todettiin, että järjestelmä, jonka koko on noin 20 käyttäjää, toimii ongelmitta seuraavilla asetuksilla: "CPU: 1core", "muisti: 512MB" ja "SSD: 25GB".

Tutkimus perustuu olettamukseen, että mikään muu ohjelmisto ei toimi marginaalisella suorituskyvyllä. On suositeltavaa valita erittely, jossa on hieman liikkumavaraa, koska kyseessä on marginaalinen arvo.

Kiitos, että katsoitte loppuun asti.