NodeJS - является ли libuv threadpool глобальным или отдельным процессом?

Скажем, у меня есть машина, на которой запущено 5 разных процессов nodejs. У каждого процесса узла есть собственный пул потоков libuv или все они совместно используют глобальный пул потоков?

Я запутался, потому что я бы предположил, что пул потоков libuv является для каждого процесса, но в документации libuv (http://docs.libuv.org/en/latest/threadpool.html) он говорит:

Пул потоков является глобальным и используется во всех циклах событий.

Я не уверен, что я действительно понимаю, что означает «все циклы событий».

Итак, вернемся к моему примеру. Если у меня есть 5 процессов nodejs, и, учитывая, что размер пула потоков по умолчанию для libuv равен 4, я в конечном итоге использую:

а) 9 потоков: 5 циклов событий nodejs + 4 потока libuv для глобального пула потоков

б) 25 потоков: 5 циклов событий nodejs + (5 * 4) потоков libuv для наличия 5 разных пулов потоков с 4 потоками в каждом.

в) ничего из вышеперечисленного?

Спасибо!


person jotadepicas    schedule 02.02.2017    source источник


Ответы (1)


Когда в документации говорится «все циклы событий», это относится ко всем циклам событий libuv в одном процессе. Упомянутая «глобальная» часть находится в пределах одного процесса.

У libuv нет возможности координировать свои действия с произвольными дочерними процессами, чтобы гарантировать, что только определенное количество потоков используется в масштабе всей системы среди всех процессов, использующих libuv. Для этого, вероятно, потребуется файл конфигурации или что-то еще, что libuv не использует.

Итак, если у вас есть 5 узловых процессов, то при условии, что каждый процесс использует размер пула потоков libuv по умолчанию, у вас будет всего 20 потоков libuv (5 процессов * 4 потока каждый). Теперь имейте в виду, что у каждого процесса будет более 4 потоков, но не все из них являются потоками libuv. Например, у вас есть основной поток, который используется для выполнения javascript, но есть также потоки, которые V8 использует для различных задач, таких как оптимизация кода, сборка мусора и т. Д.

person mscdex    schedule 03.02.2017
comment
В целом, он будет использовать по крайней мере такое количество потоков, а также сборщик мусора, оптимизацию, обработку тайм-аутов и т. Д. Большое спасибо! - person jotadepicas; 03.02.2017
comment
да и какая ностальгия по твоему логину! ха-ха - person jotadepicas; 03.02.2017