Gitlab 6.0が昨日リリースされました。彼らがなぜPumaからUnicornに乗り換えたのか知りたいです。5 より前のバージョンではUnicornを使用していました。Pumaに乗り換えたほうがいいと思いました。
この切り替えには技術的な理由がありますか?
Gitlab 6.0が昨日リリースされました。彼らがなぜPumaからUnicornに乗り換えたのか知りたいです。5 より前のバージョンではUnicornを使用していました。Pumaに乗り換えたほうがいいと思いました。
この切り替えには技術的な理由がありますか?
2020 年 4 月更新、GitLab 12.10:
Puma がデフォルトのアプリケーション サーバーになります
GitLab は、13.0 でデフォルトのアプリケーション サーバーを Unicorn から Puma に切り替えます。
GitLab 13.0 (2020 年 5 月) では:
Puma による GitLab のメモリ消費量の削減
以下の最後のセクションを読んでください。
元の回答 2013
コミット 3bc484587は、 Mathieu 'OtaK' Amiotからいくつかの手がかりを提供しています。
GitLab 5.4 の Puma から GitLab 6.0 の unicorn に切り替えました。
なぜ再びユニコーンに戻るのですか?
多くの同時ユーザーがいるシステムでマルチスレッドを実行すると、Puma は 100% の CPU とより大きなメモリ リークを引き起こしました。
それは、人々がMRIを使用したためです。Puma を使用する場合は、JRuby または Rubynius を使用する必要があります。さもなければ、世界はバラバラになります。
Mathieuはコメントに次のように追加します。
はい、Unicorn は MRI セットアップでより優れています (ただし、より多くのメモリを必要とします)。
Puma は Rubinius と JRuby の方が優れている、それだけです。Ruby ランタイムの他の実装を強制的に使用することはできないため、ほとんどのセットアップに最適なセットアップにフォールバックしました :) –</p>
軽い論争が続いています:
Puma のマルチスレッドは MRI でも問題なく動作します。
私はこれを Ruby Enterprise Edition の作成者の 1 人として言うので、Ruby のスレッド化システムを徹底的に知っています。Puma の作成者である
Evan Phoenixも、Puma を MRI で使用すると問題なく動作すると述べています。問題がある場合は、Gitlab のコードにある可能性があります。
そうは言っても、2020 年 4 月には、GitLab 12.9 を使用して Unicorn の代替 Web サーバーとして Puma を使用できるようになりました (コメントでmbomb007が
言及) 。
パッセンジャーは、ほとんどの人が考えるほど安定していません。nginx + Unicorn はより安定しています。–
オープンソースとエンタープライズの両方で Phusion Passenger を日常的に使用している多数の大規模ユーザーが、優れた安定性と成功を収めています。
New York Times、37signals、Motorola、UPS、Apple、AirBnB を考えてみてください。そのうちの何人かは、Unicorn から Passenger (オープンソースまたはエンタープライズ) に切り替えました。
2014 年 8 月の更新: 「Unicorn の代わりに Puma を使用して GitLab 7.1 を実行する」に関する記事があります。
2020 年 4 月更新、GitLab 12.10:
Puma がデフォルトのアプリケーション サーバーになります
GitLab は、13.0 でデフォルトのアプリケーション サーバーを Unicorn から Puma に切り替えます。
Puma はマルチスレッド アプリケーション サーバーであり、GitLab はメモリ消費を約 40% 削減できます。
A> は GitLab 13.0 アップグレードの一部であるため、Unicorn 設定をカスタマイズしたユーザーは、これらの設定を手動で Puma に移行する必要があります。
また、将来のリリースで Unicorn のサポートが削除されるまで、Puma を無効にして Unicorn を再度有効にすることで、Unicorn を使用し続けることもできます。
これは、Dmitry Chepurovskiyunicorn
のおかげです。彼は、Puma Web サーバーを GitLab Helm チャート (まもなく webservice チャートになります)に追加することに大きく貢献しました。
この作業は、GitLab Helm チャートのユーザーに、Unicorn の代わりに Puma を使用するオプションを提供します。
テストでは、Puma を Web サーバーとして使用すると、メモリ使用量が 40% 減少することが確認されました。
GitLab 13.0 (2020 年 5 月) の場合:
Puma による GitLab のメモリ消費量の削減
Puma は、Omnibus ベースと Helm ベースの両方のインストールのデフォルトの Web アプリケーション サーバーになりました。Puma は、GitLab のメモリ フットプリントを Unicorn と比較して約 40% 削減し、GitLab の効率を高め、自己ホスト型インスタンスのコストを節約できる可能性があります。
Unicorn プロセスの数をカスタマイズしたインストール、または低速の NFS ドライブを使用するインストールでは、デフォルトの Puma 構成を調整する必要がある場合があります。
詳細については、アップグレードとGitLab チャートの改善に関する重要な注意事項を参照してください。
GitLab BV の CEO ですが、「問題があるとすれば、Gitlab のコードにある可能性が高い」という Hongli のコメントに同意します。私たちはそれらを修正しようとしましたが、GitLab は最大のオープン ソース Rails アプリケーションの 1 つであり、再現が困難な問題です。そのため、最終的に最も実用的なソリューションを選択し、Unicorn に戻すことにしました。私たちは Puma、Unicorn、Passenger が大好きで、どれも素晴らしいソフトウェアだと思っています。