【问题标题】:node.js on heroku hobby dyno, limitationsheroku hobby dyno 上的 node.js,限制
【发布时间】:2017-05-23 04:46:57
【问题描述】:

我无法理解将 node 与 Heroku Hobby dyno 一起使用的性能限制,这种类型仅包含 1 个 Web Worker。

我的 heroku 服务器用于响应发布请求并启动服务器到服务器的通信。我们将其称为“过程”。

Node.js 是 javascript 并且只有一个事件循环,这是否意味着如果我的 heroku 服务器尚未完成该进程,它将无法启动另一个?

客户端,用户发送一个发布请求,启动“进程”。

如果该过程未完成,第二个用户是否可以发送另一个帖子请求并期望发生任何事情?在第一个进程完成之前,我的服务器会挂起吗?

在我的初步测试中,两个用户几乎同时发送请求似乎没有问题,所以我不确定我会遇到什么限制

【问题讨论】:

  • 您认为您的应用程序更像是一个被调用的 Lambda 函数,这不是测功机在 Heroku 中的工作方式。它可以处理并发请求,而且 Heroku 也有队列。您可以运行测试以查看您的测功机在阻塞之前可以处理多少请求。

标签: javascript node.js heroku concurrency scaling


【解决方案1】:

根据 Heroku 的文档,这不是问题,您可以使用 Node.js 处理多个请求而不会出现问题。

Dynos 和请求

单个测功机每秒可以处理数千个请求,但是 性能很大程度上取决于您使用的语言和框架。

一个单线程、非并发的 Web 框架(如 Rails 3 在它的 默认配置)一次可以处理一个请求。对于一个应用 平均需要 100 毫秒来处理每个请求,这意味着 每个测功机每秒大约 10 个请求,这不是最佳的。

不建议将单线程后端用于生产 应用程序,因为它们对并发处理效率低下 要求。在开发和运行时选择并发后端 生产服务。

多线程或事件驱动的环境,如 Java、Unicorn、 EventMachine 和 Node.js 可以处理许多并发请求。加载 测试您的应用程序是确定请求的唯一现实方法 吞吐量。

进一步阅读:

在测功机上:https://devcenter.heroku.com/articles/dynos#dyno-types

关于作业和排队:https://devcenter.heroku.com/articles/background-jobs-queueing

异步工作者:https://devcenter.heroku.com/articles/asynchronous-web-worker-model-using-rabbitmq-in-node

【讨论】:

  • 我个人使用Apache Benchmark)。您可以寻找其他选项,但请确保在 Heroku 上运行时偶尔进行测试。附加组件和其他小细节可能会以意想不到的方式影响您的表现。
猜你喜欢
  • 1970-01-01
  • 2018-08-11
  • 2018-08-09
  • 1970-01-01
  • 2013-06-13
  • 2018-12-15
  • 1970-01-01
  • 2013-10-14
  • 2019-07-13
相关资源
最近更新 更多