0

我在 Heroku 上部署了一个 Rails 应用程序。它获得了大量的流量,因此滞后。我想:1)让应用程序运行得更快,2)让应用程序能够适应任何一天的繁忙流量。我阅读了 Heroku 的“dynos”功能并有几个问题。这是关于什么是测功机的 Heroku 解释器:

Heroku 文档:

The containers used at Heroku are called “dynos.” Dynos are isolated, virtualized Linux containers that are designed to execute code based on a user-specified command. Your app can scale to any specified number of dynos based on its resource demands. Heroku’s container management capabilities provide you with an easy way to scale and manage the number, size, and type of dynos your app may need at any given time.

我的问题:

  1. 增加我的应用程序的测功机计数意味着我正在增加将执行其代码的容器数量——对吗?
  2. 增加我的应用程序的测功机计数会使应用程序运行得更快吗?因此,我的应用程序拥有的 dynos(容器)越多,应用程序能够承受的流量就越大?这是正确的思考方式吗?增加dynos ===提高性能?
  3. 我目前有 1 台测功机,每当遇到大量流量时,我的应用程序就会运行缓慢。在确定我的应用程序的最佳测功机计数时,我应该考虑哪些因素?我可以想象我的应用程序的大小是这些因素之一——如果是这样,我在哪里可以查看我的应用程序有多大?
  4. 除了可能增加我的应用程序的测功机数量之外,我还能如何提高性能,以使我的应用程序能够承受增加的流量而不是滞后?
  5. 增加测功机数量是否有任何负面影响?

提前感谢您对此的帮助!我是一名软件开发人员,我可以将应用程序部署到虚拟平台以将其投入生产——但我对开发操作知之甚少。哈!

4

1 回答 1

2

首先,增加测功机计数不会使您的应用程序运行得更快。但是,它可以让您同时处理更多请求,这可能会让人产生加速应用程序的感觉。当请求进入您的应用程序时,您必须执行您的代码并返回响应。如果您的应用程序已经在执行代码,那么其他请求可能需要等待执行 - 从而表现出“响应缓慢”。由于它是一个 Rails 应用程序,因此您确实希望确保您使用 Puma 作为您的网络服务器,并且您必须将其配置为使用多个进程(其数量特定于您的应用程序 - 有可用的指南)。

让您的应用程序尽可能快地运行非常重要,缓存等都有助于保持运行顺利。此外,运行的测功机数量没有神奇的数字 - 这取决于您的交通模式。每秒更多请求 == 更多测功机。

您确实可以选择垂直扩展,这会为您提供更多 CPU 和更多 RAM,但会增加成本。

此外,除了增加成本外,扩大规模并没有真正的不利因素。不过,我经常看到,扩大规模通常是不必要的。它解决了一个直接的问题,但增加了成本。通常,优化代码、查询、缓存等是更好的途径。在这里使用 NewRelic 确实很有帮助,因为这表明您在应用程序中花费了时间。您会惊讶于单个 Dyno 可以为您提供的性能!

于 2018-08-14T08:32:24.420 回答