一个 Node HTTP 服务器在不排队任何请求的情况下可以处理多少个请求每秒?

6

有人知道单个基本的Node HTTP服务器每秒可以处理多少请求而不排队任何请求吗?

实际上,我需要编写一个Node.js应用程序,能够在100毫秒内持续响应约一千个传入请求。我正在尝试在四个CPU服务器上测试,在集群模式下运行四个实例。但目前它只能在100毫秒内持续处理不到1000个请求。

1个回答

11

看这个回答:

这不是关于排队的问题,而是有关Node可以同时处理多少并发请求。它包含了示例基准测试,您可以使用和调整到自己的需求。

现在,关于排队:从某种意义上说,每个请求都在排队,因为在一个Node进程中只能同时运行一件事情。因此,您可以说没有任何请求被排队 Node http服务器可以处理多少请求的答案是1。就像Nginx一样。

现在,响应时间是完全不同的问题,取决于许多因素,例如您实际在这些请求处理程序中所做的工作。

例如,在我的实验中,我获得的每个请求的平均时间在这里与10000个并发连接小于2毫秒。如果它执行更多操作,则当然可能需要更长时间,但对于所有Node服务器,没有一个数字。这取决于您的实现效率。

现在,Node处理并发的大忌包括:

  • 永远不要使用任何“同步”函数
  • 永远不要使用长时间运行的 forwhile 循环
  • 永远不要在处理请求的进程中做任何需要大量CPU计算的工作

8
这个回答是不正确的。Node.js并非单线程,根据你的服务器硬件配置,请求将在多个线程上处理。纯逻辑部分(非I/O)将是单线程,但在大多数情况下,这只是代码的一小部分。大多数代码将从磁盘读取/从数据库读取/写入数据库/向另一个服务器发出请求等。 - daniel.gindi
丹尼尔,那有什么证据吗? - mercury

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接