我怎么知道我已经达到了 Node 中定义的线程限制?

How do I know I've hit the threads limit defined in Node?

我已将线程池的大小限制为 25。

process.env.UV_THREADPOOL_SIZE = 25;

如何知道所有线程在运行时耗尽?

有什么方法可以发现所有的define线程都用完了 有新要求?

我正在使用 Node.js (NAN) 的本机抽象来调用 C++ 函数。对于每个对 C++ 的请求,都会创建 Nan::AsyncQueueWorker。这里我想看看线程限制是否用完,然后加一个安全系数。

我分析了 nan and libuv 个来源。不幸的是,现在没有办法获得已使用的线程数。要是自己加这个功能就好了。

您是在寻找 nan 还是 js 中的实现?

In Nan impl:

您必须手动完成。维护一个映射,其中键为 int,值为 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 访问工人数...

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

Docs