Я измерил максимальное количество WEB/AP серверов (Apache и Tomcat), которые могут работать одновременно, используя арендованный сервер VPS.
Дата публикации:1 января 2021 года.
INFOMARTION > Я измерил максимальное количество WEB/AP серверов (Apache и Tomcat), которые могут работать одновременно, используя арендованный сервер 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 |
Сервер точки доступа | 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", "память: 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%
Узким местом было полное отсутствие памяти.
Для тех, кто не очень в курсе, конфигурация многопроцессорного модуля Apache (MPM) выглядит следующим образом. MPM просто объясняется как настройка того, сколько Apache разрешено обрабатывать параллельно.
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
Для параметра "MaxRequestWorkers" интерес представляет значение "250". Это настройка для максимального количества дел, которые Apache может обрабатывать одновременно. '250', поэтому 250 случаев могут быть обработаны максимально параллельно, но если посмотреть на использование памяти, то на каждый случай используется около 8 МБ памяти.
Казалось, что Java использует 320 Мб памяти (248 Мб для кучи и 72 Мб для metaspace), а Apache 640 Мб памяти (8 Мб x 80 процессов), и хотя значение настройки MPM Apache равно '250', казалось, что он не может создать более '80' процессов.
※Сервер имеет 1 Гб памяти, поэтому общая память для Apache и Java составляет 960 Мб, что почти соответствует верхнему пределу.
Сервер AP (на стороне Java) работал нормально, поэтому узким местом был WEB-сервер (Apache).
Когда Apache и Tomcat установлены и запущены, мы обнаружили, что при характеристиках "CPU: 2 ядра, память: 1GB, SSD: 50GB", количество одновременных обращений "80" является предельным.(Предполагается, что параметры памяти для Java составляют 248M для heap и 72M для metaspace.)
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 Гб памяти можно одновременно обрабатывать 200 дел. Если увеличить память до 3 ГБ, то, кажется, можно будет выполнять больше одновременной обработки, но "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", "память: 512MB" и "SSD: 25GB".
Исследование основано на предположении, что никакое другое программное обеспечение не работает с предельной производительностью. Рекомендуется выбирать спецификацию с небольшим запасом, поскольку это предельная величина.
Спасибо, что досмотрели до конца.
■INFORMATION
Пожалуйста, нажмите здесь, чтобы перейти на верхнюю страницу ИНФОРМАЦИЯ.
■PROFILE
Пожалуйста, нажмите здесь для получения профиля.
■Контактная информация.
Для получения информации о статье, пожалуйста, свяжитесь с нами здесь.