Я измерил максимальное количество 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
Сервер точки доступаApache 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", "память: 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".

Исследование основано на предположении, что никакое другое программное обеспечение не работает с предельной производительностью. Рекомендуется выбирать спецификацию с небольшим запасом, поскольку это предельная величина.

Спасибо, что досмотрели до конца.