是否增加了Dyno计数===提高了性能?它将使我的应用容纳更多流量吗?

时间:2018-08-14 02:27:26

标签: heroku containers autoscaling dyno

我已经在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(容器)越多,应用程序能够承受的流量就越大?那是思考的正确方法吗?测功提高===提高性能?
  3. 我目前有1个dyno,每当遇到大量流量时,我的应用运行速度就会很慢。在确定我的应用程序的最佳动态计数时,我应该考虑哪些因素?我可以想象我的应用程序的大小是这些因素之一-如果是这样,我可以在哪里查看我的应用程序有多大?
  4. 除了可能增加我的应用程序的测功数之外,我还应如何提高性能,以使我的应用程序能够承受增加的流量而不出现滞后?
  5. 增加测功机计数是否有负面影响?

在此先感谢您的帮助!我是软件开发人员,可以将应用程序部署到虚拟平台上以使其投入生产-但是我对开发运营知之甚少。死了!

1 个答案:

答案 0 :(得分:2)

首先,增加dyno计数不会使您的应用程序运行得更快。但是,它可以让您同时处理更多请求,这可能会使您加快应用程序的速度。随着请求的到来,您的应用程序必须执行您的代码并返回响应。如果您的应用程序已经在执行代码,则可能需要等待其他请求才能执行-这样就表现出“响应缓慢”。由于它是一个Rails应用程序,因此您确实要确保将Puma用作Web服务器,并且必须将其配置为使用多个进程(该进程的数量特定于您的应用程序-为此提供了指南)。

使您的应用程序尽可能快地运行,缓存等都有助于保持运行良好,这一点非常重要。此外,没有动态数字可以运行的测功机-这取决于您的流量模式。每秒更多的请求==更多的动态。

您可以选择垂直缩放,这样可以为您提供更多的CPU和更多的RAM,但会增加成本。

此外,除了增加的成本外,扩大规模没有真正的负面影响。不过,我经常看到扩大规模通常是不必要的。它解决了眼前的问题,但增加了成本。通常,优化代码,查询,缓存等是更好的方法。在这里使用NewRelic确实有帮助,因为这表明您在应用程序内部花费了时间。单个Dyno可以给您带来的性能会让您感到惊讶!