增加的测功机计数===提高性能吗?它会让我的应用适应更多流量吗?



我在Heroku上部署了一个Rails应用程序。它获得了大量的流量,因此滞后了。我想:1(使应用程序运行得更快,2(使应用程序可以在任何给定的一天适应繁忙的流量。我读了关于Heroku的"dynos"功能,并有几个问题。以下是Heroku对什么是dynos的解释:

希罗库文档:

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 台测功机,每当遇到大量流量时,我的应用程序就会运行缓慢。在确定应用程序的最佳测功机计数时,应考虑哪些因素?我可以想象我的应用程序的大小是这些因素之一 - 如果是这样,我可以在哪里检查我的应用程序有多大?
  4. 除了可能增加我的应用程序的测功机数量外,我还能如何提高性能,让我的应用程序能够承受增加的流量而不是滞后?
  5. 增加测功机数量有什么负面副作用吗?

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

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

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

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

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

最新更新