针对大量出站HTTP请求优化Node.js?

Zan*_*aes 9 node.js

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

我99%肯定(基于我已经运行的测试),这种滞后特别来自我使用node-oauth模块联系外部API(Facebook,Twitter和许多其他人)的大量出站请求.无可否认,正在进行的出站请求数量相对较大(每分钟大约30个左右).更糟糕的是,这经常意味着对我的服务器的相应入站请求可能需要大约5-10秒才能完成.但是,我有一个以前用于PHP编写的API版本,它能够处理这一数量的出站请求而没有任何问题.实际上,使用我的Node.js API的相同数量(甚至更少)请求的CPU使用率大约是我的PHP API的5倍.

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

  • 文章(通过LinkedIn)建议关闭套接字池.但是,当我联系流行的nodejs-request模块的作者时,他的回答是这是一个非常糟糕的主意.
  • 我听说过将"http.globalAgent.maxSockets"设置为大量可能有所帮助,事实上它似乎确实减少了我的瓶颈

我可以继续,但简而言之,我已经能够找到关于如何优化性能的确切信息,因此这些出站连接不会滞后于来自客户端的入站请求.

提前感谢任何想法或贡献.

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

Bra*_*rad 2

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

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