node.js - 为大量出站 HTTP 请求优化 Node.js?

标签 node.js

我的 node.js 服务器有时会变得缓慢或无响应,甚至在尝试连接到服务器时偶尔会导致 503 网关超时。

我 99% 确定(基于我运行的测试)这种滞后特别来 self 使用 node-oauth module 发出的大量出站请求。联系外部 API(Facebook、Twitter 等)。不可否认,发出的出站请求数量相对较多(大约每分钟 30 个左右)。更糟糕的是,这通常意味着对我的服务器的相应入站请求可能需要大约 5-10 秒才能完成。但是,我有一个以前版本的 API,它是用 PHP 编写的,它能够毫无问题地处理如此多的出站请求。实际上,对于相同数量(甚至更少)的请求,我的 Node.js API 的 CPU 使用率大约是我的 PHP API 的 5 倍。

因此,我试图找出可以改进的地方,最重要的是确保不会发生 503 超时。以下是我读过或试验过的一些内容:

  • article (by LinkedIn)建议关闭套接字池。然而,当我联系到热门nodejs-request module的作者时, 他的回答是这是一个非常糟糕的主意。
  • 我听说将“http.globalAgent.maxSockets”设置为较大的数字会有所帮助,实际上它似乎确实减少了我的瓶颈

我可以继续,但简而言之,关于如何优化性能以使这些出站连接不会滞后于我来自客户端的入站请求,我几乎找不到确定的信息。

提前感谢您的任何想法或贡献。

FWIW,我也在使用 express 和 mongoose,我的服务器托管在 Amazon Cloud 上(2x M1.Large 用于 Node 服务器,2x 负载均衡器和 3x M1.Small MongoDB 实例)。

最佳答案

在我看来,代理正在将您的请求限制在每个主机 5 个的默认级别。您的测试表明启动代理的 maxSockets 有帮助...您应该这样做。

您可以通过启动数据包嗅探器或向您的应用程序添加更多调试代码来证明这是问题所在,以表明这是限制因素。

关于node.js - 为大量出站 HTTP 请求优化 Node.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12201513/

相关文章:

javascript - Node JS 写入响应

node.js - Sails.js + PageDown -- 如何调用插件

javascript - 在 Postgres JSONB 中转义生成的单引号

node.js - 在 Facebook 机器人聊天中存储用户答案的​​最佳方式?

node.js - Nightmarejs屏幕分辨率

javascript - Promise js函数调用同一个类中的另一个函数

mysql - node.js - 监听数据库变化并更新它们

javascript - 我如何在 Node JS 中搜索和替换字符串

javascript - 将路由器逻辑分为单独的功能

node.js - 如何连接到 Angular ,nodejs http ://localhost:4200 in google chrome