2013-07-09 4 views
6

ノードv0.10.0でBen Noordhiusが行った変更の1つは、Unixの「UV_THREADPOOL_SIZE環境変数を尊重する」ことでした。 "threadpool.c"ソースファイルはまさにそれを行うようです。誰かがUV_THREADPOOL_SIZE環境変数を使ってみましたか?

この変数を設定しないと、スレッドプールのデフォルトサイズである4スレッドのスレッドプールに限定されていることが確認できます。

私はLinuxサーバー上でこの環境変数を64に設定してからNodeを再起動しますが、まだまだ私は限られているようですが、一見5のサイズのスレッドプールになりますか?

これは誰にも意味がありますか?ありがとう!

+0

あなたは[ここにあなたの目標スレッドプールのサイズを挿入] CPUコア未満を持っている場合は、注意してください:http://stackoverflow.com/q/1718465/149444 –

+0

@RicardoStuven libuvスレッドプールは一般に入出力用にのみ使用され、計算用ではないため、コアあたり1つ以上の追加スレッドはNodeでも役立ちます。これは、[受け入れられた回答](http://stackoverflow.com/a/1718522/675721)の最初の行で扱われています。 –

答えて

7

varコマンドをnodeコマンドまたはnodeプログラムの内側から設定する必要があるようです。

UV_THREADPOOL_SIZE=64 node 

をまたはプログラムから変更します:それは好きで実行

process.env.UV_THREADPOOL_SIZE=64 
//then execute some function that requires threadpool 
require('fs').readFile('testing',function(){}); 

テストスレッド:

ps -Lef | grep "\<node\>" | wc -l 
67 
+0

process.envにUV_THREADPOOL_SIZEを追加すると、スレッドが6つしか表示されません。あなたはそれを見るためにファイルを読む必要がありますか? – 4m1r

+0

@ 4m1rはい、すでに言及しました。 – user568109

+1

'.bashrc'または同等のものに' export UV_THREADPOOL_SIZE = 64'を入れることは、そのシェルの下で開始された任意のノードプロセスにも適用されます。 – DuBistKomisch

関連する問題