web-dev-qa-db-ja.com

実稼働サーバーとしてのWebrick対ThinまたはUnicorn?

Webrickを運用サーバーとして使用してはならないことは当たり前のように思えますが、その理由について言及している箇所は実際には見つかりません。コンセンサスは次のように思われます:「Webrickは開発には問題ありませんが、ThinまたはUnicornが生産、期間に選択されます。」

私はThinサーバーのホームページを調べましたが、リクエスト/秒について話していましたが、注釈がないのでグラフを本当に理解していません。

Webrickと比較してThinまたはUnicornを使用する理由を誰かに教えてもらえますか?また、開発にWebrickを使用する利点はありますか? Railsに付属して以来Webrickを使用してきましたが、Webrickがデフォルトである理由があるべきだと思います。

ちなみにHerokuを使用しています。

117
Vlad

いくつかの重要な理由

  1. Ruby( http://github.com/Ruby/ruby/tree/trunk/lib/webrick を参照)
  2. Edited複数のワーカー(特に、プリフォーク、ライフサイクル管理、非同期処理など)のように、運用Webサイトに通常必要な多くの機能はありません、など)、リダイレクト、書き換えなど

リダイレクト/リライトについて言及するとき、Webrickを使用すると、別のレイヤー(Rack、Sinatra、Rails、カスタムWebrickコードなど)でリライトを処理する必要があるという事実に言及しています。これには、コードを書き直すために余分なRuby "handlers"をスピンアップする必要があります。トラフィックの少ないサイトでは、事前に暖められたプロセスが既に何もしていないので問題ありません。トラフィックの多いサイトの場合、これはフロントエンドサーバー(Apache、Nginxなど)がRuby *を起動せずに処理できるサーバーの余分な負荷であり、おそらく桁違いに高速です。

*たとえば、ロードバランサーの背後で実行している場合、Rubyがインストールされていないサーバーにすべての書き換えトラフィックをルーティングし、メインサーバーにプライマリトラフィックのみを管理します。この書き換えトラフィックは、SEOのサイト変更などに起因する可能性があります。別のケースは、複数のコンポーネントを持つサイトで、1つのセクションはRails、別のセクションはPHPであり、 (つまり、古いPHP Railsへのパス)を書き換えます)

41
Jim Deville

WEBrickはさらに長いURIを処理できません。URIが2083文字を超えると、クラッシュが発生します。 Thinにはこれらの問題がなく、優れているため、すでに開発中です。

4
Michael Schmitz

私は単純なことや時期尚早な最適化を複雑にすることを本当に嫌います。 WEBrickは、トラフィックの少ないWebサイトであれば、productionで使用できます。ほとんどのアプリケーションがあります。

あなたのサイトが時間のかかるものをしている場合、例えば電子メールを送信するか、PDFファイル、 WEBrickをマルチスレッド化する必要があります を生成します。一度に複数のリクエストを処理したい場合。

3
Nowaker

過去にいくつかのセキュリティ上の問題がありましたが、大きな理由は、実稼働用のサーバーと比較して本当に遅いことです。

1
Brett Henning

実稼働モードで実行する場合のWebrickの最大の弱点は、シングルスレッド、シングルプロセスWebサーバーであるということです。つまり、一度に1つのHTTPリクエストしか処理できないということです。

0
Artur Beljajev