Как я знаю, что я достиг предела потоков, определенного в Node? - PullRequest
0 голосов
/ 16 января 2019

Я ограничил размер пула потоков до 25.

process.env.UV_THREADPOOL_SIZE = 25;

Как узнать, что все потоки исчерпаны во время выполнения?

Есть ли способ обнаружить, что все определенные потоки исчерпаны во время новый запрос?

Я использую Native Abstractions для Node.js (NAN) для вызова функций C ++. Для каждого запроса к C ++ создается Nan :: AsyncQueueWorker. Здесь я хочу узнать, исчерпан ли предел потока, а затем добавить фактор безопасности.

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Вы ищете реализацию в Nan или JS?

В нан. Импл .:

Вы должны сделать это вручную. Поддерживайте карту, где ключ - это int, а значение - как workAsyn. Нажмите на каждый вызов и удалите, когда работа завершена. Делайте это для каждого запроса.

Сравните размер карты с определенным лимитом потока.

0 голосов
/ 25 января 2019

Похоже, что 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)
   })

Также представляется возможным получить доступ к количеству рабочих напрямую из master с помощью плагина REPL "telnet" ...

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

Docs

0 голосов
/ 22 января 2019

Я проанализировал nan и libuv источников. К сожалению, сейчас нет способа узнать количество используемых потоков. Если только вы добавите эту функцию самостоятельно.

...