Тест на натоварването на 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).
Съдържание
1. измерване
1-1. Измервателна среда
По-долу е представена средата, в която ще се извършват измерванията.
■Информация за сървъра под наем
| CPU | 2core |
|---|---|
| memory | 1GB |
| SSD | 50GB |
■Информация за сървъра
| OS | CentOS 7.4 64bit |
|---|---|
| Уеб сървър | Apache HTTP Server 2.4.41 |
| Сървър на AP | Apache Tomcat 9.0.27 |
| Сървър на БД | PostgreSQL 10.2 |
| Java | OpenJDK 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".
Изследването се основава на предположението, че никой друг софтуер не работи с минимална производителност. Препоръчително е да се избере спецификация с известна свобода на действие, тъй като това е пределна стойност.
Това са основните стъпки и ограничения, които трябва да имате предвид.