Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js中的网络I/O是如何发生的?_Node.js_Multithreading_Threadpool_Libuv - Fatal编程技术网

node.js中的网络I/O是如何发生的?

node.js中的网络I/O是如何发生的?,node.js,multithreading,threadpool,libuv,Node.js,Multithreading,Threadpool,Libuv,我一直在node.js内部线程池中搜索I/O,发现网络I/O不使用线程进行请求 1) 那么,在我的node.js服务器中异步处理的网络请求的上限是什么?我正在尝试在我的八核处理器上使用集群模块,将使用8个分叉实例。我只想知道每个分叉实例可以处理多少对第三方Api的网络I/O请求 我有一种直觉,当前未处理的网络请求可能会在somwhere中排队 2) 像文件I/O这样的异步工作使用线程池,如何使用固定大小的内部线程池处理 有多少请求(在本例中,使用了线程)太多?在Goiogle中搜索“非阻塞网络l

我一直在node.js内部线程池中搜索I/O,发现网络I/O不使用线程进行请求

1) 那么,在我的node.js服务器中异步处理的网络请求的上限是什么?我正在尝试在我的八核处理器上使用集群模块,将使用8个分叉实例。我只想知道每个分叉实例可以处理多少对第三方Api的网络I/O请求

我有一种直觉,当前未处理的网络请求可能会在somwhere中排队

2) 像文件I/O这样的异步工作使用线程池,如何使用固定大小的内部线程池处理


有多少请求(在本例中,使用了线程)太多?

在Goiogle中搜索“非阻塞网络libuv”,并阅读一些文章。这里有一个。在Windows上,网络使用I/O完成端口。在Unix上,libuv使用epoll/kqueue/select/etc。关于文件I/O,您不完全清楚您在问什么。libuv使用阻塞文件I/O调用,但使用本机线程和队列为Javascript提供非阻塞接口。如果打开的文件I/O请求比线程池多,则请求只是排队等待,直到有线程可用。由于Javascript的接口是非阻塞的,因此Javascript对队列和线程是不可见的。一个请求在完成时只调用它的Javascript回调,不管它是否第一次排队。在libuv中,这同样适用于网络I/O吗?我需要一个指标来判断有多少请求会减慢我的服务器!一次可以处理多少网络请求取决于操作系统和计算机。我看过一些关于精心设计和配置的系统处理数十万个同时连接的WebSocket的文章。没有特别的硬限制。它取决于连接的配置和活动。对于常规传入的http请求,这完全取决于这些请求在服务器中执行的操作以及瓶颈最终出现的位置。你必须通过测试来辨别。而且,您可以使用node.js集群来更好地利用多个核心。