スレッドプールのサイズを25に制限しました。
process.env.UV_THREADPOOL_SIZE = 25;
実行時にすべてのスレッドが使い果たされていることをどうやって知ることができますか?
新しいリクエスト中にすべての定義スレッドが使い果たされていることを確認する方法はありますか?
Node.js(NAN)のネイティブ抽象化を使用してC++関数を呼び出しています。 C++へのすべてのリクエストに対してNan :: AsyncQueueWorkerが作成されます。ここで、スレッド制限が使い果たされているかどうかを確認してから、安全率を追加します。
Nanまたはjsでの実装をお探しですか?
Nan impl:
手動で行う必要があります。 keyがintでvalueがworkAsynであるマップを維持します。呼び出しごとにプッシュし、workAsynが完了したら削除します。すべてのリクエストに対してこれを行います。
マップのサイズを、定義されているスレッド制限と比較します。
この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
から直接ワーカー数にアクセスできるようです。