Puma 6 приносит улучшения производительности для большинства приложений, экспериментальную поддержку Rack 3, поддержку Sidekiq 7 Capsules и многое другое.
Вот что вы должны сделать:
Для полного списка изменений см. History.md.
Puma 6 в основном о нескольких приятных улучшениях производительности и нескольких разрушающих изменениях API, которые мы откладывали довольно долго.
Мы улучшили пропускную способность и задержку в Puma 6 в нескольких областях.1. Пропускная способность для больших разбитых ответных тел 3-10 раз выше Разбитые ответные тела >100kb должны быть 3-10 раз быстрее, чем в Puma 5. Текстовые ответные тела должны быть примерно на 10% быстрее.
2. Пропускная способность для файловых ответов в 3 раза выше Файловые ответы (например, активы) должны быть примерно в 3 раза быстрее.
3. wait_for_less_busy_worker теперь по умолчанию, что означает более низкие задержки для серверов с высокой загрузкой wait_for_less_busy_worker
был экспериментальной функцией в Puma 5 и теперь является по умолчанию в Puma 6. Эта функция заставляет каждый дочерний рабочий процесс Puma в режиме кластера ждать перед тем, как начать прослушивание сокета, и время ожидания пропорционально N * number_of_threads_responding_to_requests
. Это означает, что вероятность того, что запрос будет обработан наименее загруженным дочерним рабочим процессом Puma, прослушивающим сокет, выше. Многие пользователи сообщили, что эта опция была стабильной и уменьшала среднюю задержку, особенно в средах с высокой нагрузкой и загрузкой.### Экспериментальная поддержка Rack 3
Rack 3 теперь доступен и мы начали поддержку Rack 3. Пожалуйста, откройте баг-репорт, если вы найдете какие-либо несовместимости.
Sidekiq 7 (вскоро выпущен) вводит Capsules, что позволяет вам запускать сервер Sidekiq внутри вашего сервера Puma (или любого другого Ruby-процесса). Мы добавили поддержку, позволяя вам передавать данные в run_hooks
, см. issue #2915.
Проверьте следующий список, чтобы убедиться, что вы не зависите от каких-либо из этих поведений:1. Константы конфигурации, такие как DefaultRackup
, были удалены, см. #2928 для полного списка.
DISABLE_SSL
теперь PUMA_DISABLE_SSL
, MAKE_WARNINGS_INTO_ERRORS
теперь PUMA_MAKE_WARNINGS_INTO_ERRORS
, и WAIT_FOR_LESS_BUSY_WORKERS
теперь PUMA_WAIT_FOR_LESS_BUSY_WORKERS
.nakayoshi_fork
конфигурации была удалена без замены.wait_for_less_busy_worker
теперь включен по умолчанию. Если вы не хотите использовать эту функцию, вам нужно добавить wait_for_less_busy_worker false
в ваш конфиг.Puma::Server#min_threads
, Puma::Server#max_threads
. Вместо этого вы можете передать конфигурацию как опцию к Puma::Server#new. Это может привести к поломке некоторых гемов (capybara
, например).Puma::StateFile::FIELDS
, Puma::CLI::KEYS_NOT_TO_PERSIST_IN_STATE
и Puma::Launcher::KEYS_NOT_TO_PERSIST_IN_STATE
, а также Puma::ControlCLI::COMMANDS
.remote_addr
изменилось. При использовании заголовка set_remote_address
: "header_name" функциональности, если заголовок не передается, REMOTE_ADDR теперь устанавливается на физический адрес соединения вместо постоянного установления на 127.0.0.1. При возникновении ошибки, препятствующей получению физического адреса соединения, REMOTE_ADDR теперь устанавливается на неуказанное исходное адресное пространство ('0.0.0.0') вместо '127.0.0.1'.Ранее Puma поддерживал любые HTTP-методы и передавал их приложению. Теперь мы принимаем только следующие 8 HTTP-методов, основываясь на RFC 9110, раздел 9.1. Полный список HTTP-методов содержится в IANA HTTP Method Registry.HEAD GET POST PUT DELETE OPTIONS TRACE PATCH
С Puma 6.2 эти методы могут быть переопределены через supported_http_methods
в вашем конфигурационном файле, см. Puma::DSL#supported_http_methods
. Затем обновите ваш Gemfile:gem 'puma', '< 7'
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )