почему gitlab 6 вернулся к единорогу?

Gitlab 6.0 был выпущен вчера. Мне любопытно узнать, почему они перешли на Unicorn с Puma. Версии до 5 использовали Unicorn. Я думал, что переход на Puma был к лучшему.

Есть ли техническая причина для этого переключения?


person Litmus    schedule 23.08.2013    source источник


Ответы (2)


Генеральный директор GitLab B.V., я согласен с Хунли в его комментарии: «Если есть проблемы, то они, скорее всего, в коде Gitlab». Мы пытались их исправить, но GitLab — одно из крупнейших приложений Rails с открытым исходным кодом, и проблемы трудно воспроизвести. Поэтому в итоге мы выбрали наиболее прагматичное решение, вернувшись к Unicorn. Мы любим Puma, Unicorn и Passenger и думаем, что все они — фантастические программы.

person Sytse Sijbrandij    schedule 17.08.2014
comment
Небольшое замечание, что GitLab сделал окончательный переход на Puma: about.gitlab.com/blog/2020/07/08/миграция-на-puma-на-gitlab - person Rael Gugelmin Cunha; 25.07.2020

Обновление от апреля 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. –

Hongli ответы:

У нас очень много крупных пользователей, ежедневно использующих 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 в качестве веб-сервера.

см. Epic.


С GitLab 13.0 (май 2020 г.):

Уменьшено потребление памяти GitLab с Puma

Puma теперь является сервером веб-приложений по умолчанию как для установок на основе Omnibus, так и для установок на базе Helm. Puma сокращает объем памяти GitLab примерно на 40 % по сравнению с Unicorn, повышая эффективность GitLab и потенциально сокращая расходы на самостоятельные экземпляры.

https://about.gitlab.com/images/13_0/puma_memory.png

При установке, в которой настроено количество процессов Unicorn или используется более медленный диск NFS, возможно, потребуется изменить конфигурацию Puma по умолчанию.
См. Важные примечания по обновлению и улучшения диаграмм GitLab для получения дополнительной информации.

См. документацию и Epic.

person VonC    schedule 23.08.2013
comment
Думаю, вы правы. Но тогда я не смог найти причин для перехода с Unicorn на Puma в версии 5.1.0. - person Litmus; 23.08.2013
comment
Я автор этого комментария, 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
comment
@Mathieu'OtaK'Amiot, спасибо за этот комментарий. Я включил его в ответ для большей наглядности. - person VonC; 27.08.2013
comment
Спасибо @hongli за ваши комментарии. Phusion Passenger Enterprise — это коммерческий продукт, который может не подходить для таких продуктов, как Gitlab (для масс). Я понимаю, что Phusion использует Gitlab, возможно, мне не следует об этом спрашивать, но я хотел бы верить, что вы запускаете его на Passenger. Хотели бы вы открыть исходный код вашего рецепта установки/обновления Gitlab+Passenger? - person Litmus; 27.08.2013
comment
@VonC Большое спасибо :) - person Mathieu Amiot; 27.08.2013
comment
@ShireeshJ Действительно, PPE является коммерческим и для проектов OSS, таких как Gitlab, не подходит, если обе стороны не заключают соглашение. Более того, Passenger не так стабилен, как думает большинство людей. IMHO стабильнее nginx + Unicorn. - person Mathieu Amiot; 27.08.2013
comment
@ShireeshJ: наш рецепт с Phusion Passenger Enterprise в основном такой же, как тот, который мы описали здесь: blog.phusion.nl/2012/04/21/. Просто замените Phusion Passenger с открытым исходным кодом на Phusion Passenger Enterprise. - person Hongli; 27.08.2013
comment
@Mathieu'OtaK'Amiot: У нас очень много крупных пользователей, ежедневно использующих Phusion Passenger, как с открытым исходным кодом, так и Enterprise, с большой стабильностью и успехом. Вспомните New York Times, 37signals, Motorola, UPS, Apple, AirBnB. Некоторые из них даже отказались от Unicorn в пользу Passenger (с открытым исходным кодом или Enterprise). Возможно, у вас был плохой опыт работы с Phusion Passenger в прошлом? Если да, не могли бы вы рассказать нам больше о своих проблемах? Мы будем рады помочь. Мы гарантируем, что это стабильно, и если это не для вас, мы это исправим. - person Hongli; 27.08.2013
comment
Что касается Это потому, что люди использовали МРТ. Вы ДОЛЖНЫ использовать JRuby или Rubynius при использовании Puma. Или мир развалится на части. комментарий - это ложь. Многопоточность Puma отлично работает с МРТ. Я говорю это как один из авторов Ruby Enterprise Edition, поэтому я знаю систему потоков Ruby вдоль и поперек. Эван Феникс, автор Puma, также заявил, что использование Puma с МРТ прекрасно работает (news.ycombinator. com/item?id=5995142). Если есть проблемы, то они, скорее всего, в коде Gitlab. - person Hongli; 27.08.2013
comment
@Mathieu'OtaK'Amiot Я согласен с Хунли в отношении стабильности Passenger. Пользуемся всеми тремя - пассажиром, единорогом и пумой. Хотя все стабильно, пассажиром легко управлять. Один из наших веб-сайтов www.elitmus.com работает на Passenger OSS и имеет рейтинг Alexa 13000. Это довольно хороший трафик, который он обрабатывает. У нас почти никогда не было проблем с управлением ростом трафика с помощью Passenger (начиная с версии 2.0.x и по настоящее время). - person Litmus; 28.08.2013
comment
@Hongli Тогда я попробую еще раз, в последний раз я использовал его с Phusion REE (rubyenterpriseedition.com) и это был действительно, буквально, ад. Спасибо за информацию :) И мне плохо за ругань, если я не прав :( - person Mathieu Amiot; 28.08.2013
comment
Без проблем. Пожалуйста, не стесняйтесь обращаться к нашему форуму поддержки, если вы столкнетесь с чем-либо. Мы всегда заинтересованы в том, чтобы делать вещи лучше. - person Hongli; 28.08.2013
comment
Еще одно обновление: Puma доступна в версии 12.9. - person mbomb007; 07.04.2020
comment
@mbomb007 Спасибо. Я включил ваш комментарий в ответ для большей наглядности. - person VonC; 07.04.2020