2013-02-26 74 views
4

我们有一个社交网站,运行,红宝石并发+缩放和Rails

Stunnel-> Haproxy-> Nginx->麒麟

我们有一个24核的机器上运行20个麒麟过程。

当运行与200个请求和需要100个并发用户测试,

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

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

如何在最短时间(4-5秒)内完成所有请求?我是否应该在我的导轨代码中工作以使其在0.10秒内完成,或者是否有任何方法可以更改我的服务器配置,以便在5秒内完成所有请求?

回答

2

记住每个麒麟例如吃〜250MB RAM

所以20个独角兽需要至少5 GB内存。 如果过载内存的限制 - 他们开始工作的极端缓慢:休眠和唤醒过程与重装Rails的环境

尽量减少麒麟服务器的数量,使测试

+0

我们有一个32 GB的RAM机..这是当前的内存状态。 MemTotal:33006148 KB MemFree:3812472 KB 缓存:16727060 KB SwapCached:25908 KB SwapTotal:33542140 KB SwapFree:33493212 KB – 2013-02-26 05:40:06

+0

也许你有太多的工人为你的CPU核心数量。检查此链接:http://serverfault.com/questions/369811/optimal-number-of-per-cpu-unicorn-processes – user1852788 2013-02-26 06:05:25

+0

对不起,我们在24核心机器运行..当我做nproc输出是24。 – 2013-02-26 06:36:49