【问题标题】:When should I add (auto-scale) new Nginx server instances?我应该何时添加(自动扩展)新的 Nginx 服务器实例?
【发布时间】:2013-11-25 06:10:10
【问题描述】:

我是否应该考虑 CPU 利用率、网络流量或 http 响应时间检查?我已经使用 Apache AB 运行了一些测试(来自同一台服务器 - eq: ab -k -n 500000 -c 100 http://192.XXX.XXX.XXX/) - 我监控了负载平均值。即使负载在 1.0 - 1.50(一台核心服务器)之间,“每个请求的时间”(平均值)也相当稳定,对于一个简单的动态页面,只需 140 毫秒,只需一次设置/获取 Redis 操作。无论如何,我很困惑,因为一般建议是在超过 70% 的 CPU 利用率阈值时启动一个新实例。

【问题讨论】:

  • 这是你的平均流量/并发用户数吗?
  • 只是一个测试,服务器还没有投入生产。对于 ab -k -n 500000 -c 1500,每个请求的时间为 589 毫秒(平均值)。对于 -c 2000 850 毫秒。对于所有测试,平均负载保持在 1.30-1.50 之间,我的并发性是 100、1500 还是 2000 都没有关系。这让我想知道平均负载是否是决定何时添加或删除的好指标新实例。

标签: nginx load-balancing capacity-planning


【解决方案1】:

70% 的 CPU 利用率对于像 nginx 这样的 CPU 密集型应用程序来说是一个很好的经验法则。 CPU 时间有点像体温:它实际上隐藏了很多不同的东西,但却是一个很好的一般健康指标。平均负载是单独衡量有多少进程正在等待调度。规则是 70%(或 80%)利用率的原因是,在此之后,受 CPU 限制的应用程序往往会遭受争用导致的延迟和非线性性能。

您可以通过在您的设置中针对 CPU 利用率绘制吞吐量和延迟(中位数和第 90 个百分位)来自行测试。找到特定系统的拐点对于容量规划很重要。

Facebook 关于 Dyno 的原始论文对这种现象进行了很好的描述,他们的系统用于测量 PHP 在负载下的吞吐量。

https://www.facebook.com/note.php?note_id=203367363919

【讨论】:

    猜你喜欢
    • 2017-10-14
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2016-12-25
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    相关资源
    最近更新 更多