【问题标题】:Ruby Concurrency + Scaling with RailsRuby 并发 + 使用 Rails 进行扩展
【发布时间】:2013-02-11 11:20:54
【问题描述】:

我们有一个社交网站,

Stunnel->Haproxy->Nginx->Unicorn

我们有 20 个独角兽进程在 24 核机器上运行。

当我使用 200 个请求和 100 个并发用户运行测试时,

50% 的请求需要 3694 秒
66% 的请求需要 4524 秒
75% 的请求需要 5444 秒
80% 的请求需要 5923 秒
90% 的请求需要 7676 秒
95% 的请求需要 10007 秒
98% 的请求需要 13841 秒
99% 的请求需要 18110 秒
100% 的请求需要 21987 秒

我在 Log 中看到每个请求需要 0.5 秒才能完成,但最后一个请求需要 21 秒。

如何让所有请求在最短时间(4-5 秒)内完成?我应该在我的 Rails 代码中工作以在 0.10 秒内完成,还是有什么办法可以更改我的服务器配置以在 5 秒内完成所有请求?

【问题讨论】:

    标签: ruby-on-rails ruby concurrency scalability


    【解决方案1】:

    请记住,每个独角兽实例都占用 ~250Mb RAM

    所以 20 只独角兽至少需要 5 Gb RAM。 如果您超载 RAM 限制 - 它们开始工作的速度非常慢:通过重新加载 Rails 环境来休眠和唤醒进程

    尝试减少独角兽服务器的数量并进行测试

    【讨论】:

    • 我们有一台 32 Gb 内存机器。这是当前的内存状态。 MemTotal:33006148 kB MemFree:3812472 kB 缓存:16727060 kB SwapCached:25908 kB SwapTotal:33542140 kB SwapFree:33493212 kB
    • 可能您的 CPU 内核数量过多。检查此链接:serverfault.com/questions/369811/…
    • 对不起,我们在 24 核机器上运行.. 当我做 nproc 输出是 24。
    猜你喜欢
    • 2013-11-19
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多