【问题标题】:Node takes very long time to response to the JSON requestNode 需要很长时间才能响应 JSON 请求
【发布时间】:2011-06-01 05:46:56
【问题描述】:

我已经使用 node.js 实现了聊天应用程序。程序打开与客户端的连接,并在 EventEmitter 发出“recv”事件时响应新消息。

问题是当服务器保存大约 3 或 4 个流时,响应其他请求需要很长时间。 chrome 开发者工具将请求的状态显示为待处理。到达服务器(本地主机)花了超过 5-30 秒。当node.js收到新请求时,我使用console.log记录

我不知道为什么会有很长的停顿。 chrome 浏览器、node.js 或我应该知道的任何其他内容是否有任何限制?当它同时持有太多请求时节点是否会延迟,我应该如何测量这个值?谢谢

【问题讨论】:

  • 您所说的规模没有人为限制(3-4 个连接?)——我听说过最大文件描述符和导致瓶颈的东西,但那是在高得多的负载下。您可能需要发布一些代码。

标签: node.js


【解决方案1】:

Chrome 支持每个域同时连接六个连接,因此如果这些连接已在使用中,则必须等待一个连接关闭。如果您想知道发生了什么,请使用数据包捕获程序来检查实际的网络流量。

【讨论】:

    【解决方案2】:

    浏览器仅限于一定数量的parallel connections,这适用于相同的浏览器上下文 - 例如,当您打开了 6 个以上的选项卡时,连接将被排队,您会看到它们处于待处理状态。

    您可以避免此限制,例如,为每个客户端连接使用唯一的轮询子域。这就是 facebook 解决此限制的方法,但问题在于 Firefox,此解决方法不起作用,即使您使用唯一的子域,您的连接也会在达到限制时排队。

    其他解决方案可能是使用 HTML5 本地存储,您可以利用 StorageEvent 将更改传播到同一浏览器中的其他选项卡。这就是 StackOverflow 聊天的完成方式。这种方法的优点是您只需要一个与服务器的轮询连接,但缺点是在旧浏览器中缺乏 HTML5 本地存储支持或在 FF 版本

    【讨论】:

      猜你喜欢
      • 2016-11-07
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 2018-07-31
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多