【问题标题】:Why can two Heroku dynos can only process one request?为什么两个 Heroku dynos 只能处理一个请求?
【发布时间】:2017-02-27 16:22:07
【问题描述】:

所以我有一个 Heroku 网络应用程序正在运行,并且我已将我使用的 Dynos 的数量升级到两个,以便在我们的高峰时段处理更高的网络流量(我们目前有两个网络测功机和一个工作测功机)。今天早上,我在网站上进行了一些维护,并在我们的一个网页上运行了一个非常密集的脚本(它向 Google 的 Maps API 发送了 2,500 个地址查找请求)。运行脚本(从网页运行)后,我尝试加载主页并注意到它超时。我的印象是,如果我有两个 Dynos 运行服务器将能够同时处理两个请求,但看起来情况可能并非如此。谁能提供有关 Heroku Dyno 系统工作原理的更多详细信息?

【问题讨论】:

  • 您的 Rails 应用程序是否在服务器端进行 2500 次 GMaps API 调用?
  • 是的,它使它们成为服务器端

标签: ruby-on-rails heroku server scaling


【解决方案1】:

这更多地取决于您使用的网络服务器......有这个问题,可能您没有更改网络服务器并且正在使用 Webrick,它是 Rails 附带的,应该可以在开发环境中工作。

Webrick 不并行请求......所以不管你有多少 dyno,它只是不使用它并且一次处理一个请求。

要使用您的 dyno,您需要一个在多线程(如 Puma)或多进程(如 Unicorn)上运行的网络服务器。

今天,Heroku 推荐运行Puma

即使只在一个测功机上运行,​​Puma 也会处理并行请求...但显然更多的测功机(并将 puma 配置为使用它们)它将处理更多的并行请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多