Тест на натоварването на Apache и Tomcat на VPS: ограничения и резултати


Публикувано:

Актуализирано:


Статии › Тест на натоварването на Apache и Tomcat на VPS: ограничения и резултати

Състояние през 2026 г. и безопасна употреба

Заключение: В купа Apache-to-Tomcat, първата граница може да бъде клиент, прокси работници, конекторни конци, JVM купчина или събиране на отпадъци, приложение код, база данни, или VPS себе си. Единният номер на валутата не може да идентифицира капацитета без латентност, грешка и данни за ресурсите.

Какво ще научите

  • Какво е измервал оригиналният двустепенен VPS експеримент.
  • Как границите на проксито и конектора Tomcat взаимодействат с времето за реакция на приложението.
  • Какво да запишем в модерен тест: процентили, пропускания, неуспехи, процесори, памет, GC, нишки и наситеност надолу по веригата.

За кого е статията: Java уеб екипите се учат как да проектират малък тест за капацитет, основан на доказателства.

Актуално към 2026 г.: Резултатите по-долу принадлежат към оригиналния тест на автора и не са възпроизведени за тази редакция актуализация. Отнасяйте се към тях като към изследване на случая, без да проверявате текущите резултати или препоръка за закупуване на 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".

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

Това са основните стъпки и ограничения, които трябва да имате предвид.