Страницы

четверг, 14 октября 2021 г.

Red Hat Satellite 6.9 с веб-сервером Puma

Вплоть до Red Hat Satellite 6.8 ключевым компонентом Satellite являлся сервер веб-приложений Passenger. Red Hat Satellite использовал Passenger для запуска приложений Ruby, таких как Foreman. Satellite 6.9 более не использует Passenger. Приложение Foreman (основной сервер пользовательского интерфейса (UI) и интерфейса разработки приложений (API)) был перенесен на использование проекта Puma. Сегодня мы рассмотрим проект Puma и то, как смена сервера приложений повлияла на производительность сервера Satellite.

Satellite 6.8 на базе Passenger Satellite 6.9 на базе Puma
Passenger интегрируется с Apache HTTP Server для захвата входящих запросов и перенаправления их соответствующему компоненту, отвечающему за обработку (mod_passenger). Puma – это независимый веб-сервер, который запускается как часть Satellite 6.9. Обратный прокси развернут в Apache для обработки трафика HTTPS и проксирования связанных запросов в новый процесс службы Foreman.
Passenger использует процесс Apache HTTP Server для каждого запроса. Для Satellite это происходит в следующих случаях:
  • При обращении к графическому пользовательскому интерфейсу (GUI).
  • При обращении к интерфейсу разработки приложений (API).
  • При регистрации хоста контента.
Puma представила две службы systemd в Satellite:
  • foreman.service
  • foreman.socket
Passenger настроен при помощи конфигурационных файлов Apache HTTP Server. Конфигурационные файлы отвечают за производительность, масштабирование и поведение Foreman, как описано в руководстве по настройке Red Hat Satellite 6.8. Puma использует два рабочих процесса (Workers) по умолчанию и каждый из них сконфигурирован с минимальным значением равным 0 потоков и максимальным значением в 16 с возможностью изменять значения данных параметров.


Возможности настройки Puma.

Puma – это сервер приложений Ruby, который используется для обслуживания клиентских запросов Foreman. Для любой конфигурации Satellite, предназначенной для обработки большого числа клиентов или высокой частоты операций – важно корректно настроить Puma, для этого нужно следить за следующими параметрами:

  • foreman-service-puma-threads-min
  • foreman-service-puma-threads-max

Веб-сервер Puma использует пул потоков. Можно установить максимальное и минимальное число потоков (для рабочего процесса), который доступен в пуле, при помощи параметров, указанных выше.

Например, можно настроить потоки следующим образом:

satellite-installer --foreman-foreman-service-puma-threads-min=0 --foreman-foreman-service-puma-threads-max=16 

Puma будет автоматически увеличивать число потоков с минимального значения на базе объема траффика, пока не достигнет определенного параметром максимума.

Puma предлагает один режим, связанный с рабочими процессами, называемый кластерным режимом (Clustered Mode). Кластерный режим уводит рабочие процессы от главного. Каждый дочерний процесс использует свой собственный пул потоков. Количество рабочих процессов также может быть настроено при помощи параметра foreman-service-puma-workers. Например:

satellite-installer --foreman-foreman-service-puma-workers=2

Установка количества рабочих процессов в значение 2 (значение по умолчанию) и максимального числа потоков в 16 позволит Puma максимально создавать до 32 потоков.

На данный момент Puma не является частью профилей настройки (Tuning Profiles), но это отслеживается в ошибке 1959691. Более того при смене настроек, пользователи должны убедиться, что результирующее число подключений к PostgreSQL может быть обработано.


Внутреннее тестирование и полученные результаты.

Чтобы протестировать то, как смена Passenger на Puma повлияла на производительность, один из экспериментов, который провела команда разработки заключался в сравнении скоростей конкурентной регистрации на Satellite 6.8 и 6.9. Была изменена скорость конкурентных регистраций хостов контента (Content Host) до 560 с шагом в 70 регистраций. (Т.е. 70, 140, 210 и так далее). Кроме продолжительности процесса регистрации, также отслеживалась частота ошибок регистрации и системные показатели сервера Satellite, такие как потребляемая память, системная нагрузка и многие другие. Также были выполнены оценки с разным числом процессоров для определения лучших параметров.

В результате тестирования, Satellite 6.8 (с использованием Passenger) в конфигурации по умолчанию смог обработать примерно 270 конкурентных регистраций. В свою очередь Satellite 6.9 (с использованием Puma) в конфигурации по умолчанию смог обработать примерно 480 конкурентных регистраций.

Более того, регистрации с Passenger в процессе тестирования проходили быстрее на 28% на низких уровнях конкуренции, но Puma значительно быстрее и надёжнее работала на высоких уровнях.

Меньшее числе потоков будет приводить к большему потреблению памяти на сервере Satellite для различных масштабов. Например, при настройке сервера Puma с максимальным числом потоков равным 16 и минимальным – 16, Puma будет потреблять примерно на 12% памяти меньше по сравнению с теми же настройками, но с минимальным числом потоков равным 0.

Большее число рабочих процессов позволит сократить время параллельной регистрации хостов. При наличии достаточного числа процессоров, добавление большего числа рабочих процессов обеспечит большую производительность.

Например, сравнение конфигураций Satellite с 16 процессорами и разным числом рабочих процессов, продемонстрировало следующие результаты: увеличение числа рабочих процессов с 2 до 4 обеспечило увеличение производительности на 34%, с 4 до 8 – на 17%, но с 8 до 16 – только на 4%.

Больше подробностей можно найти в руководстве по настройке производительности к Red Hat Satellite 6.9.


Заключение.

Мы рассмотрели сервер приложений Puma, представленный в Red Hat Satellite 6.9 и то, как это влияет на производительность сервера Satellite. 

Три параметра, которые используются для настройки сервера Puma:

  • --foreman-foreman-service-puma-workers
  • --foreman-foreman-service-puma-threads-min
  • --foreman-foreman-service-puma-threads-max

Каждый из этих параметров может оказать значительное влияние на производительность.

Комментариев нет:

Отправить комментарий