1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Puma_old1

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
5.0-Upgrade.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 18.04.2025 12:28 f6c362e

Добро пожаловать в Puma 5: Spoony Bard.

Spoony Bard

Примечание: Puma 5 теперь автоматически использует переменную окружения WEB_CONCURRENCY, если она установлена. Подробнее см. этот пост. Если использование памяти увеличилось после обновления до Puma 5, это указывает на то, что вы теперь работаете с несколькими рабочими процессами. Уменьшить использование памяти можно, настроив это значение на более низкое.

Puma 5 включает новые экспериментальные возможности для повышения производительности, несколько улучшений качества жизни и множество исправлений ошибок. Вот что вы должны сделать:

  1. Проверьте раздел Обновление ниже, чтобы увидеть, повлияют ли какие-либо разрывные изменения версии OnClickListener 5.0 на вас.
  2. Обновите до версии 5.0 в вашем Gemfile и разверните.
  3. Попробуйте новые экспериментальные возможности производительности, описанные ниже, и сообщите о результатах в трекере проблем Puma.

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.

Уменьшение задержек, улучшение пропускной способностиОт наших друзей из GitLab новый экспериментальный параметр конфигурации 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

nakayoshi_fork вызывает сборку мусора несколько раз и компактизирует кучу на Ruby 2.7+ перед форкированием. Это может уменьшить использование памяти Puma на MRI с включенным preload. Это вдохновлено работой Коичи Сасады.

Чтобы использовать его, добавьте следующее в ваш puma.rb:

nakayoshi_fork

fork_worker

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'.

Что нового?

  • Много исправлений ошибок.
  • Быстрые фазированные перезапуски и таймауты рабочих процессов.
  • pumactl теперь имеет команду thread-backtraces для вывода трассировки стека потока, что позволяет выводить трассировки стека потока на всех платформах, а не только на *BSD и Mac. (#2053)
  • Добавлено увеличение requests_count в Puma.stats. (#2106)
  • Быстрые фазированные перезапуски и таймауты рабочих процессов. (#2220)
  • Добавлен параметр state_permission в DSL конфигурации для установки разрешений файла состояния (#2238)
  • Поддержка Ruby 2.2 будет прекращена в Puma 6. Это последний основной выпуск для Ruby 2.2.## Обновление* Установка переменной окружения WEB_CONCURRENCY теперь настраивает количество рабочих процессов (процессов), которые Puma будет запускать, а также включает предзагрузку приложения.
  • Если вы не явно устанавливали environment ранее, Puma теперь проверяет RAILS_ENV и будет использовать его, если он доступен, помиму RACK_ENV.
  • Если вы использовали опцию CLI --control, обновите свои скрипты, чтобы использовать --control-url.
  • Если вы используете worker_directory в вашем файле конфигурации, измените его на directory.
  • Если вы используете MRI, стандартное количество потоков в Puma теперь составляет 5, а не 16. Это может изменить количество потоков в вашем пуле потоков. Мы считаем, что 5 является лучшим значением по умолчанию для большинства Ruby-веб-приложений на MRI. Более высокие значения увеличивают задержку за счет конкуренции за GVL.
  • Если вы используете количество рабочих процессов более одного, установленное с помощью WEB_CONCURRENCY, Puma теперь по умолчанию предзагружает приложение (отключите с помощью preload_app! false). Мы считаем, что это лучший вариант по умолчанию, но он может вызвать проблемы в приложениях, не являющихся Rails, если у вас не настроены правильные before и after вилки. См. документацию для вашего фреймворка. Пользователям Rails ничего менять не нужно. Обратите внимание, что невозможно использовать постепенное перезапуск с предзагрузкой.* режим TCP и демонизация были удалены без замены. Для демонизации используйте современное решение для управления процессами, такое как systemd или monit.
  • connected_port был переименован в connected_ports и теперь возвращает массив, а не целое число.Затем обновите свой Gemfile:

gem 'puma', '< 6.0'

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Puma_old1.git
git@api.gitlife.ru:oschina-mirror/mirrors-Puma_old1.git
oschina-mirror
mirrors-Puma_old1
mirrors-Puma_old1
master