Gitlab 6.0 был выпущен вчера. Мне любопытно узнать, почему они перешли на Unicorn с Puma а>. Версии до 5 использовали Unicorn. Я думал, что переход на Puma был к лучшему.
Есть ли техническая причина для этого переключения?
Gitlab 6.0 был выпущен вчера. Мне любопытно узнать, почему они перешли на Unicorn с Puma а>. Версии до 5 использовали Unicorn. Я думал, что переход на Puma был к лучшему.
Есть ли техническая причина для этого переключения?
Генеральный директор GitLab B.V., я согласен с Хунли в его комментарии: «Если есть проблемы, то они, скорее всего, в коде Gitlab». Мы пытались их исправить, но GitLab — одно из крупнейших приложений Rails с открытым исходным кодом, и проблемы трудно воспроизвести. Поэтому в итоге мы выбрали наиболее прагматичное решение, вернувшись к Unicorn. Мы любим Puma, Unicorn и Passenger и думаем, что все они — фантастические программы.
Обновление от апреля 2020 г., GitLab 12.10:
Puma станет сервером приложений по умолчанию
GitLab переключит серверы приложений по умолчанию с Unicorn на Puma в 13.0.
И с GitLab 13.0 (май 2020 г.):
Уменьшено потребление памяти GitLab с Puma
Прочтите последние разделы ниже.
Оригинальный ответ 2013 г.
Коммит 3bc484587 предлагает некоторые подсказки из Матье 'OtaK' Амио:
Мы перешли с Puma в GitLab 5.4 на unicorn в GitLab 6.0.
зачем снова переключаться на Unicorn?
Puma вызвала 100%-ную загрузку ЦП и большие утечки памяти при многопоточном запуске в системах с большим количеством одновременных пользователей.
Это потому, что люди использовали МРТ. Вы ДОЛЖНЫ использовать JRuby или Rubynius при использовании Puma. Или мир развалится.
Матье добавляет в комментарии:
Да, Unicorn лучше (но требует больше памяти) для МРТ.
Puma лучше для Rubinius и JRuby, вот и все.Они не могут заставить людей использовать другие реализации Ruby Runtime, поэтому они просто вернулись к лучшей настройке для большинства настроек :) –
Легкие споры разгораются вокруг:
Многопоточность Puma прекрасно работает с МРТ.
Я говорю это как один из авторов Ruby Enterprise Edition, поэтому знаю систему многопоточности Ruby наизнанку.
Эван Феникс, автор Puma, также заявил, что использование Puma с МРТ прекрасно работает.Если есть проблемы, то они, скорее всего, в коде Gitlab.
При этом в апреле 2020 г. Puma теперь доступна в качестве альтернативного веб-сервера. в Unicorn с помощью GitLab 12.9
(упоминается mbomb007 в комментарии)
Матье "Отак" Амиот комментарии:
Пассажир не так стабилен, как думает большинство людей. IMHO стабильнее nginx + Unicorn. –
У нас очень много крупных пользователей, ежедневно использующих Phusion Passenger, как с открытым исходным кодом, так и для предприятий, с большой стабильностью и успехом.
Вспомните New York Times, 37signals, Motorola, UPS, Apple, AirBnB. Некоторые из них даже отказались от Unicorn в пользу Passenger (с открытым исходным кодом или Enterprise).
Обновление за август 2014 г.: есть статья на тему "Запуск GitLab 7.1 с использованием Puma вместо Unicorn"
Обновление от апреля 2020 г., GitLab 12.10:
Puma станет сервером приложений по умолчанию
GitLab заменит серверы приложений по умолчанию с Unicorn на Puma в версии 13.0.
Puma — это многопоточный сервер приложений, позволяющий GitLab сократить потребление памяти примерно на 40 %.
A> Это часть обновления GitLab 13.0, пользователи, которые настроили настройки Unicorn, должны будут вручную перенести эти настройки в Puma.
Также можно будет остаться на Unicorn, отключив Puma и повторно включив Unicorn до поддержки Unicorn. будет удален в будущем выпуске.
Это благодаря Дмитрию Чепуровскому, который внес значительный вклад в добавление веб-сайта Puma. сервера на диаграмму Helm unicorn
GitLab (скоро станет диаграммой веб-сервиса).
Эта работа предоставляет пользователям диаграммы GitLab Helm возможность использовать Puma вместо Unicorn.
При тестировании мы наблюдали снижение использования памяти на 40 % при использовании Puma в качестве веб-сервера.
Уменьшено потребление памяти GitLab с Puma
Puma теперь является сервером веб-приложений по умолчанию как для установок на основе Omnibus, так и для установок на базе Helm. Puma сокращает объем памяти GitLab примерно на 40 % по сравнению с Unicorn, повышая эффективность GitLab и потенциально сокращая расходы на самостоятельные экземпляры.
При установке, в которой настроено количество процессов Unicorn или используется более медленный диск NFS, возможно, потребуется изменить конфигурацию Puma по умолчанию.
См. Важные примечания по обновлению и улучшения диаграмм GitLab для получения дополнительной информации.
См. документацию и Epic.
That's because people used MRI. You MUST use JRuby or Rubynius when using Puma. Or else the world breaks apart.
И да, Unicorn лучше (но требует больше памяти) в настройках МРТ. Puma лучше на Rubinius & JRuby, вот и все. Они не могут заставить людей использовать другие реализации Ruby Runtime, поэтому они просто вернулись к лучшей настройке для большинства настроек :)
- person Mathieu Amiot; 27.08.2013