Примечание: Puma 5 теперь автоматически использует переменную окружения
WEB_CONCURRENCY
, если она установлена. Подробнее см. этот пост. Если использование памяти увеличилось после обновления до Puma 5, это указывает на то, что вы теперь работаете с несколькими рабочими процессами. Уменьшить использование памяти можно, настроив это значение на более низкое.
Puma 5 включает новые экспериментальные возможности для повышения производительности, несколько улучшений качества жизни и множество исправлений ошибок. Вот что вы должны сделать:
Puma 5 был назван Spoony Bard нашим новым супер-вкладчиком, @wjordan. Will представил вам одно из новых экспериментальных улучшений производительности для этой версии, а также много других исправлений и рефакторингов. Если вы хотите назвать будущую версию Puma, посмотрите CONTRIBUTING.md и начните помогать нам!Puma 5 также приветствует @MSP-Greg как нашего нового коммитера. Greg сыграл важную роль в улучшении нашего CI-установки и SSL-функций. Greg также назвал нашу версию 4.3.0: Mysterious Traveller.
Puma 5 включает три новых "экспериментальных" возможности для повышения производительности для кластерных модов Pumas, работающих на MRI.
Если вы попробуете любую из этих возможностей, пожалуйста, сообщите о результатах в трекере проблем.
Частью причины, по которой мы называем их экспериментальными, является то, что мы не уверены, будут ли они действительно полезны. Загрузки работы в реальном мире часто не соответствуют тому, что мы предполагаем, и синтетические бенчмарки обычно не помогают определить, будет ли изменение полезным или нет.
Мы не верим, что любое из новых функций будет иметь отрицательное влияние или повлияет на стабильность вашего приложения. Это либо "работает", либо "ничего не делает" эксперимент. Если какие-либо из функций окажутся особенно полезными, мы можем сделать их стандартными в будущих версиях Puma.
wait_for_less_busy_worker
может уменьшить задержки и улучшить пропускную способность для приложений Puma с высокой нагрузкой на MRI. Подробнее см. pull request.Пользователи этого параметра могут заметить уменьшение задержек в очереди запросов и возможно общего уменьшения задержек.Добавьте следующее в ваш puma.rb
, чтобы попробовать:
wait_for_less_busy_worker
# или
wait_for_less_busy_worker 0.001
Тестирование в GitLab показывает, что значения между 0.001
и 0.010
являются наилучшими.
Версия 5.0 вносит два новых параметра конфигурации, которые могут улучшить использование памяти.
nakayoshi_fork
вызывает сборку мусора несколько раз и компактизирует кучу на Ruby 2.7+ перед форкированием. Это может уменьшить использование памяти Puma на MRI с включенным preload. Это вдохновлено работой Коичи Сасады.
Чтобы использовать его, добавьте следующее в ваш puma.rb
:
nakayoshi_fork
Puma 5 вводит экспериментальный новый параметр конфигурации для режима кластера, fork_worker
(--fork-worker
из командной строки). Этот режим заставляет Puma форкировать дополнительные рабочие процессы от рабочего процесса 0, а не напрямую от основного процесса:
10000 \_ puma 4.3.3 (tcp://0.0.0.0:9292) [puma]
10001 \_ puma: cluster worker 0: 10000 [puma]
10002 \_ puma: cluster worker 1: 10000 [puma]
10003 \_ puma: cluster worker 2: 10000 [puma]
10004 \_ puma: cluster worker 3: 10000 [puma]
Этот режим совместим с фазированными перезапусками. Он также может улучшить использование памяти, так как рабочий процесс загружает дополнительный код после обработки запросов.Для получения дополнительной информации о использовании refork
и fork_worker
, см. 'Fork Worker'.
thread-backtraces
для вывода трассировки стека потока, что позволяет выводить трассировки стека потока на всех платформах, а не только на *BSD и Mac. (#2053)requests_count
в Puma.stats
. (#2106)state_permission
в DSL конфигурации для установки разрешений файла состояния (#2238)WEB_CONCURRENCY
теперь настраивает количество рабочих процессов (процессов), которые Puma будет запускать, а также включает предзагрузку приложения.environment
ранее, Puma теперь проверяет RAILS_ENV
и будет использовать его, если он доступен, помиму RACK_ENV
.--control
, обновите свои скрипты, чтобы использовать --control-url
.worker_directory
в вашем файле конфигурации, измените его на directory
.WEB_CONCURRENCY
, Puma теперь по умолчанию предзагружает приложение (отключите с помощью preload_app! false
). Мы считаем, что это лучший вариант по умолчанию, но он может вызвать проблемы в приложениях, не являющихся Rails, если у вас не настроены правильные before
и after
вилки. См. документацию для вашего фреймворка. Пользователям Rails ничего менять не нужно. Обратите внимание, что невозможно использовать постепенное перезапуск с предзагрузкой.* режим TCP и демонизация были удалены без замены. Для демонизации используйте современное решение для управления процессами, такое как systemd или monit.connected_port
был переименован в connected_ports
и теперь возвращает массив, а не целое число.Затем обновите свой Gemfile:gem 'puma', '< 6.0'
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )