web-dev-qa-db-ja.com

Nodeで定義されたスレッド制限に達したことをどのように知ることができますか?

スレッドプールのサイズを25に制限しました。

process.env.UV_THREADPOOL_SIZE = 25;

実行時にすべてのスレッドが使い果たされていることをどうやって知ることができますか?

新しいリクエスト中にすべての定義スレッドが使い果たされていることを確認する方法はありますか?

Node.js(NAN)のネイティブ抽象化を使用してC++関数を呼び出しています。 C++へのすべてのリクエストに対してNan :: AsyncQueueWorkerが作成されます。ここで、スレッド制限が使い果たされているかどうかを確認してから、安全率を追加します。

17
leuage

Nanまたはjsでの実装をお探しですか?

Nan impl:

手動で行う必要があります。 keyがintでvalueがworkAsynであるマップを維持します。呼び出しごとにプッシュし、workAsynが完了したら削除します。すべてのリクエストに対してこれを行います。

マップのサイズを、定義されているスレッド制限と比較します。

6
ava

nan および libuv ソースを分析しました。残念ながら、現在、使用されているスレッドの数を取得する方法はありません。この機能を自分で追加するだけの場合。

2
Axifive

このclusterモジュールが役立つ可能性があるようです...

 var cluster = require('../')
    ,http = require('http');

 var server = http.createServer(function(req, res){
   res.writeHead(200);
   res.end('Hello World');
 });

 var workerCount = 0;

 cluster(server)
   .listen(3000)
   .on('worker',()=> {
     workerCount++;
     console.log('workerCount',workerCount)
   })
   .on('worker killed',()=> { 
     workerCount--; 
     console.log('workerCount',workerCount)
   })

また、REPL "telnet"プラグイン...を使用してmasterから直接ワーカー数にアクセスできるようです。

http://learnboost.github.io/cluster/docs/stats.html

ドキュメント

1
cantuket