【问题标题】:Capacity planning - knowing when to scale?容量规划 - 知道何时扩展?
【发布时间】:2012-10-17 10:48:19
【问题描述】:

我想了解我的系统何时处于负载状态(内存和 CPU),何时应该计划扩展。

内存

我正在使用 ec2 实例。我有多个进程正在运行。它们一直消耗 80-90% 的内存。我应该担心还是应该高兴我正在最大限度地利用可用资源。

什么应该是内存消耗?在什么情况下我应该担心扩展?

CPU

我有另一个运行其他进程的 ec2 实例。大多数情况下,系统 cpu 利用率仅为 18-20%,但有时对于某些进程,它会跃升至 90-100%。

任何事情都可能出错,或者只有进程可能会因为 CPU 周期不可用而变慢,并且在一段时间内它们会完成。此外,任何新进程都将等待 CPU 周期的可用性。

会有什么问题吗?

基本上我想了解什么是场景以及应该考虑放大(垂直或水平)的值是什么

在线答案或阅读指南,任何内容都值得赞赏。

【问题讨论】:

    标签: load scaling capacity-planning


    【解决方案1】:

    衡量性能比从资源使用情况预测要容易得多,因此使用 jmeter 或 wget 设置一个小探针,大约每小时测试一次您的系统,以检测减速。

    在准备进行常规探测时,在单个目标系统上进行测试并找出需要多少用户才能使其减速。这就是你应该在生产中通过添加实例来避免的数量。

    然后才测量资源使用情况,看看问题的根本原因是什么,看看您是否可以为您的实例指定更多资源。

    --戴夫

    【讨论】:

      【解决方案2】:

      首先:您必须定义扩展自己的阈值。这主要与您在质量或稳定性指南和应用程序中的一些因素有关。这几乎没有任何一般规则。以下是需要考虑的几点:

      • 某些应用程序可以在 100% 的 CPU 使用率下正常运行(只要此计算机上没有其他作业),并且某些应用程序可能需要在使用 80% 阈值时进行扩展。记忆也是如此。
      • 想想您是否有一些必须在特定时间完成的关键任务。如果是这样,您必须考虑获得足够的 CPU 和/或内存以供他们完成工作。
      • 始终观察和测量您的系统数据。我建议有一个像munin 这样的系统来显示你的性能数据(及其变化)随着时间的推移。需要衡量的有趣点是系统负载、cpu 使用率、内存消耗、I/O 服务时间等。
      • 尝试了解是什么限制了您的应用程序。例如,如果您有很多 CPU 密集型任务,那么 CPU 就是您的极限。如果您有很多 I/O 要做,请关注 I/O 统计信息、延迟时间等。

      总而言之:扩展的需求取决于您的应用程序。在系统资源使用方面更好地了解它。如果您设置了监控系统,则可以随着时间的推移观察系统性能。

      一个很好的阅读是"The Art of Capacity Planning"。另外,如果你谷歌一下“容量规划”,你会发现更多的点。

      【讨论】:

        猜你喜欢
        • 2012-07-16
        • 2018-08-28
        • 2019-02-09
        • 1970-01-01
        • 2020-03-26
        • 2015-03-25
        • 2016-11-18
        • 2018-06-04
        • 1970-01-01
        相关资源
        最近更新 更多