8

RailsのデフォルトのWEBrickサーバーに対する他のオプションを試して評価してきましたが、Thinは最も痛みがなく、非常にうまく機能したクリーンなものでした。

これらのMongrel、Thin、WEBrick、Passengerのどれをお勧めしますか、そしてその理由は..?これらのサーバーのいずれかに付属するスケーラビリティー特典(クラスターフレンドリーまたはある種のスケールを処理できる構成)はありますか?または、スケーラビリティーを評価する際のパラメーターにする必要がありますか?

4

3 に答える 3

9

ディパックはすでにあなたの質問の半分に答えましたが、少しはっきりさせておきます。(私はPhusion Passengerの作者の1人です。)

  • WEBrickはおもちゃのウェブサーバーです。パフォーマンスが低く、メモリをリークすると言われているため、開発以外では誰も使用していません。
  • あなたはシンがうまくいったと言いました。すでにリバースプロキシ構成で設定していますか?それが本番シナリオで人々が行うことだからです。Thin(またはMongrel、Unicorn)をインターネットに直接公開することは安全ではありません。
  • より詳細な説明については、RubyonRailsサーバーオプションPhusionPassengerアーキテクチャの概要を読むことに興味があるかもしれません。

スケーラビリティに関しては、大きな違いはありません。これらはすべて本番環境で非常によく似ており、すべてほぼ同じようにスケーリングされます。発生する問題は、アプリまたはRailsが原因である可能性が最も高くなります。ええと、実際に本番環境で使用すべきではないWEBrickを除いて。hello worldベンチマークに違いが見られるかもしれませんが、それだけです。本番環境での使用では、ほとんどの時間がアプリで費やされるため、HelloWorldベンチマークで表示されるわずかな速度の違いは完全に表示されなくなります。

ただし、注意すべき微妙な点がいくつかあります。

  • Phusion Passengerは、グローバルキューイングと呼ばれる機能を提供します。マニュアルで詳しく説明されている特定の問題を解決します。デフォルトでは、NginxとApacheはラウンドロビン方式でリクエストをプロキシするため、この問題が発生しますが、PhusionPassengerは発生しません。Phusion Passengerを使用しない場合にこれを回避する方法はありますが、特定の構成または追加のWebサーバーモジュールのインストールが必要です。
  • I / Oモデルは、アプリケーションの性質に応じて重要な場合と重要でない場合があります。Mongrel、Thin、Unicorn、これらはすべてマルチプロセスのシングルスレッドです。これは、ローカルデータベース内のものを検索して何かをレンダリングする従来のウェブアプリには最適ですが、多くのHTTP API呼び出しを実行するアプリや、I/Oで多くの待機が必要なアプリには主に適しています。Rails 4ライブストリーミングが大したことである理由は、これを詳細に説明しています。

    Phusion Passengerもマルチプロセスシングルスレッドですが、PhusionPassengerEnterpriseはマルチスレッドをサポートしています。Phusion Passenger Enterpriseは、オープンソースのPhusion Passengerの商用バリアントであり、大規模な本番環境に役立つさまざまな機能を備えています。

  • 大規模な本番環境では、一部の機能が重要になります。たとえば、ローリングリスタート、デプロイが失敗したときに何も問題が表示されないなどです。Mongrel、Thin、Unicorn、Phusion Passengerはすべて、これらの機能をある程度公開しますが、管理者の労力が必要なものもあります。その他。たとえば、MongrelとThinでローリングリスタートを実装するには、展開スクリプトでかなり多くの手順が必要です。ユニコーンはそれほど多くのステップを必要としませんが、それでもかなりのステップを必要とします。これがPhusionPassengerEnterpriseの魅力です。これらすべての機能を利用して、単一の構成オプションに変換します。オプションをオンにすると、ソフトウェアが残りの処理を行います。

したがって、シナリオに最適と思われるオプションを選択してください。

于 2012-10-31T08:41:47.393 に答える
1

本番環境に設定するのが最も簡単なのは、おそらくApacheとmod_rails(passenger)でしょう。新しいホットネスを使用したい場合は、nginxと乗客に旋風を与えることができます。

開発の場合、雑種は通常、最も扱いやすいです。ほとんどのWindowsIDE(RadRails、Netbeans)では、開発作業にWebrickまたはMongrelを使用するかどうかを選択でき、IDE自体からサーバーを制御できます。

アップデート

4つの選択肢

実際には4つの選択肢があり、それに加えてWEBrickもありますが、これは実稼働サーバーにとっては珍しい選択肢です。およそ複雑さが増す順に...

nginx + Mongrel nginx + Passenger Apache + Mongrel Apache + Passenger(Phusion Passenger Standaloneがありますが、実際にはnginx + Passengerが一緒にコンパイルされているため、カウントしていませんが、一部の人にとっては良いオプションかもしれません。)

大規模なサイトでは、サーバーの前に専用のレイヤー7ハードウェア(NetScaler、F5など)を追加する場合があります。

于 2012-10-27T05:28:08.643 に答える
0

薄いものは、開発と生産のための宝石の「薄い」と同じくらい簡単です

于 2012-10-29T04:20:24.977 に答える