1

私はJRuby1.6.7/ Rails 3.2.11 WebアプリケーションをGlassfishにデプロイしています(その前にWebサーバーはありません)。アプリケーションをマルチスレッドにしたいのですが。

ベストプラクティスの記事では、最大ランタイムと最小ランタイムを1に設定してから、config/environment.rbに移動して次の行に入力する必要があることが示されています。

config.threadsafe!

ただし、Oracleからのメモには、( Githubでのこのメモとともに) web.xml構成ファイルまたはコマンドラインでランタイムの最小数と最大数を設定するだけでよく、config.threadsafe!については何も書かれていません。(この方法での私の感覚は、各ランタイムがRailsの完全なインスタンスをロードするため、多くのメモリを消費するということです)。

どちらの方法が正しいですか?どちらも正しいですか?マルチスレッド化するためのより良い方法はどれですか?

4

1 に答える 1

2

次のことを行う必要があります

  1. 最小ランタイムと最大ランタイムを 1 に設定します
  2. config/environments/production.rb に移動して
    #config.threadsafe!行のコメントを外します。スレッドセーフ モードを動作させたい他の環境でもこれを行う必要があります。

これらのことを行うことで、Rails は 1 つのランタイムと複数のスレッドを使用して実行され、大量のメモリが節約されます。スレッドセーフな jruby on rails アプリに関する追加情報は、http ://nowhereman.github.com/how-to/rails_thread_safe/にあります。

Warbler を使用している場合は、ステップ 1 をスキップできます。ステップ 2 のみに従う場合、デフォルトで最小および最大ランタイムが設定されます。war ファイル内の web.xml を見ると、設定されていることがわかります。同様に、スレッドセーフが設定されていない場合、min と max の設定がないことがわかります。

そうは言っても、Rails 4 ではデ​​フォルトでスレッドセーフが有効になっています。ここにコミットがあります https://github.com/rails/rails/pull/6685

また、方法と理由についての投稿は次のとおりです

于 2013-02-04T22:22:23.340 に答える