【问题标题】:Terrible node js API performance with very light usage糟糕的节点 js API 性能,使用量非常小
【发布时间】:2018-01-16 12:27:29
【问题描述】:

我们有一个 Node.js graphql api,并且在少量使用(2-3 个请求/秒)的情况下,请求时间非常非常快地飙升到数百毫秒。

我们的主要数据源是 Postgres(带有 pg-node)和 Redis(ioredis),我们正在正确使用数据加载器来避免 n+1。 Postgres 和 Redis 查询本身非常快,这种缓慢完全在节点应用程序本身内。

似乎一切都很快变慢了,我认为它根本与网络或 pg/redis 无关。

【问题讨论】:

  • 我认为您必须显示一些代码才能让其他人帮助您
  • 我明白,但这很困难,因为我不知道是什么导致了这些减速。这是我的第一个大型节点应用程序,所以我可能忽略了一些相当简单的事情!
  • 如果您不想努力发布您使用的代码,请不要指望人们会花时间回答您的问题。毕竟,这只是一个低价值的猜测,比如您的代码可能对连接管理不善,这会导致性能迅速下降。
  • @vitaly-t 这不是因为缺乏努力。如果有一段特定的代码运行缓慢,我很乐意分享。
  • 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。

标签: javascript node.js postgresql redis graphql


【解决方案1】:

您使用的是什么类型的 heroku dyno?

更便宜的 dyno 在 EC2 实例上共享,因此您可能与使用更多带宽的公司共享。

此外,您可能还想查看网络性能。 Heroku 负载均衡器及其出站流量也被共享。去年我们遇到了一个问题,因此我们对 redis 的出站调用需要很长时间。

我建议将您的 api 移至 aws。它跳过了测功层,所以你有更好的性能。

【讨论】:

  • 标准 2x。我在本地运行时遇到了类似的问题(10-30 毫秒的 redis 响应),所以我不完全确定是 heroku。
  • 事实上,我认为这根本不是网络请求。似乎应用程序中的所有内容在轻度使用下都会变慢。
  • 考虑网络连接时,10-30ms的redis响应是正常的。你是如何托管 redis 的?
猜你喜欢
  • 2011-12-19
  • 2018-09-18
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多