2010-10-15 46 views
0

我試圖評估各種Rails服務器解決方案。首先在我的名單上是一個nginx +乘客系統。我打滑了一個EC2實例的RAM 8場音樂會和2個處理器,nginx的安裝和乘客,並已將此添加到nginx.conf文件:高流量導軌性能調優

passenger_max_pool_size 30; 
passenger_pool_idle_time 0; 
rails_framework_spawner_idle_time 0; 
rails_app_spawner_idle_time 0; 
rails_spawn_method smart; 

我加了一點「真棒」控制器鐵軌那會剛render :text => (2+2).to_s

然後我打滑了一個小盒子,跑這來測試它:

ab -n 5000 -c 5 'http://server/awesome' 

而且CPU,而這是在包裝盒上運行看起來非常像這樣:

05:29:12 PM  CPU  %user  %nice %system %iowait %steal  %idle 
05:29:36 PM  all  62.39  0.00  10.79  0.04  21.28  5.50 

我注意到只需要7-10個併發請求就可以使CPU處於1%閒置狀態,當然這會嚴重拖慢響應時間。

所以我想知道,很多CPU負載只是與Rails做生意的成本?即使有大量的RAM和一些內核,它是否能夠同時提供超過6個便宜的請求?有沒有什麼好的建議可以讓我提供15-30個同時請求?

更新:嘗試了「超大型和大量CPU」EC2之一的事情。神聖的廢話是很多CPU的力量。甜蜜點似乎是每個CPU大約2個同時請求,在16個同時請求的情況下能夠達到約630個請求/秒。不過,不知道這是否在許多小盒子上實際上具有成本效益。

+0

此外,這是一個Rails堆棧溢出的問題或超級用戶的性能問題?我對此有點困惑。 – 2010-10-15 17:46:44

+0

也許ServerFault? – Codebeef 2010-10-15 17:50:34

+0

性能調優可能是stackoverflow和serverfault之間的灰色區域,我認爲 – Amala 2010-10-15 17:50:36

回答

1

我必須說我的Rails應用程序大大提升了支持約80個併發用戶,從最初支持約20個添加一些memcached服務器(EC2中的4個媒體)後支持。幾個月前,我經營了一家高交通運動網站。數據庫大小約爲6個帶有較大更新/插入的演出。

MySQL(RDS大型高使用率)緩存也有所幫助。

我試着玩搭乘設置,但得到了一些好奇的結果 - 例如每個線程吃了250兆的RAM,這是奇怪的考慮到應用程序不是那麼大。

您還可以通過使用現貨實例節省大量的美元,但不要完全依賴於它 - 它們的定價有時會出現峯值。 AutoScale有兩個策略 - 一個帶有實例實例,另一個帶有點播(讀取:保留)實例。

+0

我想問你的每月RDS成本是多少? – 2013-04-09 17:29:17

+0

約160美元或250美元或類似的東西,我記得前期的成本約爲2000美元。 – 2013-04-09 21:10:36

+0

謝謝!我們只是使用MySQL的高ios ec2和做我們自己的日常備份,但我們正在考慮它。 – 2013-04-09 21:36:33