【问题标题】:Hapijs: Performance tuning for lots of concurrent requestsHapijs:大量并发请求的性能调整
【发布时间】:2015-05-06 14:08:02
【问题描述】:

是否有任何特殊的调优技巧来加强基于 hapijs 框架构建的 API?

特别是如果您有大量并发请求(+10000/秒)正在访问数据库?

  • 我正在使用 PM2 在“集群模式”下启动我的进程,以便能够对服务器上的不同内核进行负载平衡
  • 我不需要提供静态内容,所以没有 apache/nginx 代理

更新 17:11

以 1000 个请求/秒(使用 loader.io)运行测试会产生这条曲线 - 到目前为止还可以。但我想知道是否还有改进的余地。
(硬件:64gb / 20核数字海滴)

【问题讨论】:

  • 出于安全原因,您应该考虑使用反向 nginx 代理,即使没有静态内容。此外,当使用反向代理时,您可以在不同的端口上多次启动应用程序,并使用 nginx 进行负载平衡。
  • @Qualcuno 安全现在不是问题。我想知道 nginx 部分是否不会比性能增益增加更多开销……但我会尝试使用 PM2/hapi vs nginx/hapi 运行一些测试。
  • 这就是我发表评论而不是答案的原因。这只是一个提示,恕我直言,拥有反向代理总是一个好主意。我们仍然使用 PM2 来分叉(而不是集群)应用程序的多个实例并保持它们处于活动状态,但负载平衡由 nginx 完成。
  • 无论如何,作为“加强您的 api”的提示,请检查内存使用情况并确保您没有泄漏内存。
  • 你真的需要达到 DB 10000+/秒吗?听起来像是一个使用hapijs.com/tutorials/caching的机会

标签: node.js hapijs


【解决方案1】:

最后我只是使用了节点的httpbody-parser 模块的组合来实现我所需要的。

但我认为这只是可行的,因为我的应用程序只有两个端点(一个GET,一个POST)。

如果您的应用程序逻辑相当复杂并且您想坚持使用hapi,请考虑使用负载平衡器并将负载分配给多个虚拟机。

负载测试结果(在更小的 DO 液滴上进行新设置):

【讨论】:

  • 你能告诉我你用的是什么负载测试框架,UI看起来不错?
  • @Stacklearner 它不是一个框架,而是一个服务——称为loader.io。您可以免费开始,如果您需要更多,请付钱“去专业”。
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多