Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 单个请求需要很长时间才能使用这些非阻塞I / O服务器会发生什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Node.js,或eventlet或任何其他非阻塞服务器,当给定请求需要很长时间时会发生什么,是否会阻止所有其他请求?

例如,一个请求进来,计算需要200ms,这将阻止其他请求,例如nodejs使用单个线程.

这意味着每秒15K将大幅下降,因为计算给定请求的响应所需的实际时间.

但这对我来说似乎不对,所以我问的是究竟发生了什么,因为我无法想象这是怎么回事.

解决方法

它是否“阻塞”取决于你对“块”的定义.通常,块意味着您的cpu本质上是空闲的,但当前线程无法对其执行任何操作,因为它正在等待I / O等.除非您使用非推荐的同步I / O函数,否则在Node.js中不会发生这种情况.相反,函数快速返回,当它们开始完成的I / O任务时,您的回调会被调用,然后从那里获取它.在此期间,可以处理其他请求.

如果你在节点中做了一些计算量很大的事情,那么在完成之前没有其他任何东西可以使用cpu,但是由于一个非常不同的原因:cpu实际上很忙.通常这不是人们说“阻塞”时的意思,相反,它只是一个很长的计算.

如果它不涉及I / O并且纯粹在进行计算,那么200ms是需要很长时间才能完成的.说实话,这可能不是你应该在节点上做的事情.更符合节点精神的解决方案是在节点调用的另一个(非javascript)程序中进行那种数字运算,并在完成时调用回调.假设您有一台多核机器(或另一台程序在不同的机器上运行),节点可以继续响应请求,而另一台程序则会崩溃.

有些情况下集群(正如其他人提到的那样)可能有所帮助,但我怀疑你的集群是其中之一.当你有很多很多小的请求时,群集真的是为了cpu而不是单个核心可以处理的,而不是你有单个请求需要花费数百毫秒的情况.

大佬总结

以上是大佬教程为你收集整理的node.js – 单个请求需要很长时间才能使用这些非阻塞I / O服务器会发生什么?全部内容,希望文章能够帮你解决node.js – 单个请求需要很长时间才能使用这些非阻塞I / O服务器会发生什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。