Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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中阻止事件循环仍然存在问题吗?_Node.js_Nginx - Fatal编程技术网

Node.js中阻止事件循环仍然存在问题吗?

Node.js中阻止事件循环仍然存在问题吗?,node.js,nginx,Node.js,Nginx,我想了很久 您有NGINX负载平衡器,它将web请求分配给特定的node.js实例(您可以有很多)。如果其中一个块长时间处于阻塞状态,则会有分配给它的web请求在内部等待运行,并且它们会被卡住。这在循环负载平衡器中发生。但您可以为NGINX选择“最少连接”选项,这意味着NGINX会将传入的web请求分配给node.js实例,该实例中的连接数最低,因此web请求不会转到node.js实例,因为其中有更多的连接等待在里面,它会转到一个, 它能快速地处理它们,因为它们在里面等待的时间更少 所以,不需要

我想了很久

您有NGINX负载平衡器,它将web请求分配给特定的node.js实例(您可以有很多)。如果其中一个块长时间处于阻塞状态,则会有分配给它的web请求在内部等待运行,并且它们会被卡住。这在循环负载平衡器中发生。但您可以为NGINX选择“最少连接”选项,这意味着NGINX会将传入的web请求分配给node.js实例,该实例中的连接数最低,因此web请求不会转到node.js实例,因为其中有更多的连接等待在里面,它会转到一个, 它能快速地处理它们,因为它们在里面等待的时间更少

所以,不需要关心代码中的阻塞事件循环

我说得对吗

但您可以为NGINX选择“最少连接”选项

假设进程A连接了一个客户端,而进程B连接了100个客户端

进程A可能会阻止它接受新连接。Nginx将流量路由到它。在这种情况下,Nginx只知道它有100个到进程B的开放连接,这比进程A多

在这种情况下,
最少连接
平衡选项没有实际用途

所以,不需要关心代码中的阻塞事件循环

你至少应该在任何时候都有点关心这一点。您的代码中可能有需要定期运行的内容。如果你堵住了,他们就跑不动了

一般来说,如果您确实在阻塞,那么应用程序中可能存在一些损坏或设计不当的内容。(当然,如果出于某种特殊原因,您打算这么做,那么阻塞是没有问题的。这些原因很少见。)

但您可以为NGINX选择“最少连接”选项

假设进程A连接了一个客户端,而进程B连接了100个客户端

进程A可能会阻止它接受新连接。Nginx将流量路由到它。在这种情况下,Nginx只知道它有100个到进程B的开放连接,这比进程A多

在这种情况下,
最少连接
平衡选项没有实际用途

所以,不需要关心代码中的阻塞事件循环

你至少应该在任何时候都有点关心这一点。您的代码中可能有需要定期运行的内容。如果你堵住了,他们就跑不动了

一般来说,如果您确实在阻塞,那么应用程序中可能存在一些损坏或设计不当的内容。(当然,如果出于某种特殊原因,您打算这么做,那么阻塞是没有问题的。这些原因很少见。)