Измерих максималния брой WEB/AP сървъри (Apache и Tomcat), които могат да работят по едно и също време, като използвах VPS сървър под наем.


Дата на публикуване:1 януари 2021 г.



INFOMARTION > Измерих максималния брой WEB/AP сървъри (Apache и Tomcat), които могат да работят по едно и също време, като използвах VPS сървър под наем.

Преглед.

Измерих максималния брой случаи, които WEB/AP сървърите (Apache и Tomcat) могат да обработват по едно и също време, и бих искал да опиша резултатите. Бяхме любопитни за максималния брой заявки, които могат да бъдат обслужени, затова проведохме проучване. Използвайте това като референция за избор на спецификации на VPS сървър.

Този път измерванията бяха извършени на WEB/AP сървърите (Apache и Tomcat), но моля, вижте статията по-долу за измервания само на WEB (Apache).

Измерих максималния брой случаи, които уеб сървърът (Apache) може да обработва едновременно, като използвах VPS сървър под наем.

Съдържание

  1. измерване
  2. Подробности за резултатите от измерванията
  3. резюме

1. измерване

1-1. Измервателна среда

По-долу е представена средата, в която ще се извършват измерванията.

■Информация за сървъра под наем

CPU2core
memory1GB
SSD50GB

■Информация за сървъра

OSCentOS 7.4 64bit
Уеб сървърApache HTTP Server 2.4.41
Сървър на APApache Tomcat 9.0.27
Сървър на БДPostgreSQL 10.2
JavaOpenJDK 11

1-2. Метод на измерване

Искам да измеря това с помощта на JMeter. JMeter е инструмент за измерване на натоварването, който работи в Java. Инструментът позволява едновременното подаване на голям брой заявки. Бихме искали постепенно да увеличим броя на едновременните заявки с помощта на JMeter и да увеличаваме натоварването, докато обработката престане да бъде по силите ни.

Специфичните условия включват.

  • интервал на заявката・・・5 сек.
  • Брой едновременни заявки・・・10 случая.(Измерванията постепенно се увеличават с по 10 случая.)
  • Измерване на времето・・・60 секунди.

Времето за измерване е "60 секунди", а интервалът на заявката - "5 секунди", така че искате да влезете в системата 12 пъти (60÷5) многократно.

1-3. резултат от измерването

В края на краищата много хора се интересуват от заключението за това с какви спецификации може да работи сървърът и колко може да работи, така че бих искал първо да посоча заключението.

CPU:2core
memory:1GB
SSD:50GB
Могат да се обработват до 80 едновременни заявки

Резултатите от това измерване показаха горното. Горепосочените резултати позволяват да се направи следното заключение. Опитайте се да използвате това като критерий при избора на спецификации на сървъра.

CPU:1core
memory:512MB
SSD:25GB
Могат да се обработват до 20 едновременни заявки.
CPU:2core
memory:1GB
SSD:50GB
Могат да се обработват до 80 едновременни заявки
CPU:3core
memory:2GB
SSD:100GB
Могат да се обработват до 200 едновременни заявки.

Беше установено, че система с размер около 20 потребители ще работи без проблеми с "CPU: 1core", "memory: 512MB" и "SSD: 25GB".

2. Подробности за резултатите от измерванията

Описахме резултатите от измерванията по-рано, но ако се интересувате от вида на резултатите, които сме описали, моля, проверете и подробностите за резултатите от измерванията, които ще бъдат описани в бъдеще.

2-1. WEB/AP сървър (Apache, Tomcat) измервания

Заявката е хвърлена в сценарий, при който потребителят влиза от екрана за влизане и след влизане се показва екранът със списъка. Между другото, екранът е изграден с помощта на рамката Spring, включително функцията за удостоверяване.

Измерванията показаха следните резултати.

  • За 10 едновременни заявки⇒OK
  • За 20 едновременни заявки⇒OK
  • За 30 едновременни заявки⇒OK
  • За 40 едновременни заявки⇒OK
  • За 50 едновременни заявки⇒OK
  • За 60 едновременни заявки⇒OK
  • За 70 едновременни заявки⇒OK
  • За 80 едновременни заявки⇒OK
  • За 90 едновременни заявки⇒NG

Грешка е възникнала при 90-ия случай. Причината беше грешка при свързването с Apache. Състоянието на сървъра по това време е следното.

  • Използване на процесора・・・26%
  • използване на паметта・・・100%

Пълната липса на памет беше пречката.

Конфигурацията на многопроцесорния модул (MPM) на Apache е следната. MPM се обяснява просто като настройка на това колко паралелно може да обработва Apache.

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

Интересна е настройката "250" за "MaxRequestWorkers". Това е настройка за максималния брой случаи, които Apache може да обработва едновременно. '250', така че 250 случая могат да бъдат обработени максимално паралелно, но ако погледнем използването на паметта, за всеки случай се използват около 8 MB памет.

Изглежда, че Java използва 320 МВ памет (248 МВ за купчина и 72 МВ за метапространство), а Apache - 640 МВ памет (8 МВ x 80 процеса) и въпреки че стойността на настройката MPM на Apache е "250", изглежда, че не може да създаде повече от "80" процеса.
※Сървърът разполага с 1G памет, така че общата памет за Apache и Java е 960MB, което е почти на горната граница.

Сървърът на AP (от страна на Java) работеше добре, така че тясното място беше WEB сървърът (Apache).

Когато Apache и Tomcat са инсталирани и стартирани, установихме, че при спецификациите "CPU: 2core, memory: 1GB, SSD: 50GB", броят на едновременните достъпи "80" е ограничението.(Предполага се, че настройките на паметта за Java са 248 М за купчина и 72 М за метапространство.)

2-2. разглеждане

Оттук нататък това става съображение, но тъй като паметта е тясното място, ако паметта се промени, броят на процесите, които могат да се обработват едновременно, също ще се увеличи.

【Присъстват.(memory1GB)】

  • memory:1GB
  • Брой нишки на Apache:80 случая.
  • Потребление на памет за всяка нишка в Apache.:8MB
  • Потребление на памет на Apache:640MB(80 случая.×8MB)
  • Потребление на памет на Tomcat:320MB(248 млн. евро за HEAP.、72 м за метапространството.)
  • Консумация на памет от Apache+Tomcat:960MB

【след промяната(memory2GB)】

  • memory:2GB
  • Брой нишки на Apache:200 случая
  • Потребление на памет за всяка нишка в Apache.:8MB
  • Потребление на памет на Apache:1600MB(200 случая×8MB)
  • Потребление на памет на Tomcat:320MB(248 млн. евро за HEAP.、72 м за метапространството.)
  • Консумация на памет от Apache+Tomcat:1920MB

С 2 GB памет може да е възможно да се обработват 200 случая едновременно. Ако паметта се увеличи до 3 GB, изглежда, че може да се извършва повече едновременна обработка, но "MaxRequestWorkers (максимален брой случаи, които могат да се обработват едновременно)" на MPM на Apache е "250", така че ще е необходима настройка и тук, ако паметта се увеличи допълнително. Може да е необходима и настройка на паметта на Java. Обратно, ако паметта се намали наполовина, ще се получи следното.

【след промяната(memory512GB)】

  • memory:512GB
  • Брой нишки на Apache:20 случая
  • Потребление на памет за всяка нишка в Apache.:8MB
  • Потребление на памет на Apache:160MB(20 случая×8MB)
  • Потребление на памет на Tomcat:320MB(248 млн. евро за HEAP.、72 м за метапространството.)
  • Консумация на памет от Apache+Tomcat:480MB

3. резюме

Описани са резултатите от измерването на максималния брой случаи, които WEB/AP сървърите (Apache и Tomcat) могат да обработват едновременно. Беше установено, че система с размер около 20 потребители ще работи без проблеми с "CPU: 1core", "memory: 512MB" и "SSD: 25GB".

Изследването се основава на предположението, че никой друг софтуер не работи с минимална производителност. Препоръчително е да се избере спецификация с известна свобода на действие, тъй като това е пределна стойност.

Благодарим ви, че гледахте до края.