我的 node.js 服务器有时会变慢或无响应,甚至在尝试连接到服务器时偶尔会导致 503 网关超时。
我有 99% 的把握(基于我已经运行的测试)这种延迟主要来自我使用node-oauth 模块发出的大量出站请求以联系外部 API(Facebook、Twitter 和许多其他 API)。诚然,发出的出站请求数量相对较大(大约每分钟 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 实例)。