2011-04-20 26 views
4

任何人都可以評論改進Sinatra的每個過程嗎?Rails與Sinatra進程內存使用情況?

我發現我的網絡API使用了大約每位乘客的Rails 100MB 3個過程。我想知道如果我切換到Sinatra會有什麼改進。

+0

有會是一個大的性能提升(這是很難顯示數字「的原因誰擁有在軌和辛納屈版本相同的應用程序來比較???)...但當然是有許多的權衡,即:明確定義有活動記錄的MVC模式等 – eggie5 2011-04-20 00:33:46

回答

9

這裏有一個隨機的不實世界的標杆,給你一點點的想法:

   | Real | Private | Vir. Priv. | 
---------------+---------+---------+------------| 
[1]  Rails | 38.6MB | 35.9MB | 76.3MB | 
---------------+---------+---------+------------| 
[2] Sinatra | 18.7MB | 16.2MB | 51.7MB | 
---------------+---------+---------+------------| 
[3]  + Haml | 19.6MB | 17.0MB | 53.7MB | 
---------------+---------+---------+------------| 
[4] + Sequel | 24.4MB | 21.7MB | 54.8MB | 
---------------+---------+---------+------------| 
  1. 的Rails 3.0.7,創建一個shell項目,啓動服務器,使1個請求。
  2. 屈1.2.3薄壁1.2.11,require 'sinatra'; get('/'){ "Hello" },使1個請求。
  3. ...添加Haml的3.0.25,get ('/'){ haml "%p Hello" },使1個請求。
  4. ... add續集3.22.0,DB = Sequel.sqlite,請求1。

所有在OS X上測試該測試表明,)西納特拉是更爲裸機比Rails,和b)你將需要比較蘋果蘋果(您選擇的操作系統上),如果你想要有意義的數字。具有相同功能的相同應用程序。

我的現實世界的應用程序使用超薄+續集+ Haml的+皮克在Windows上運行往往圍繞每個實例50-90MB運行(這取決於應用程序我跑後面的反向代理2-4實例)。因人而異。

+0

非常有趣。謝謝! – Dogweather 2011-04-24 04:12:09

+0

來源請? ;)嚴肅地說,這並沒有太多的證據。 – RyanScottLewis 2011-08-27 06:53:00

+0

是上表中的#4 + HAML AND + Sequel? – 2013-06-18 10:46:24

0

首先,你是如何測量內存使用情況?

建議您使用乘客內存統計更準確地瞭解內存使用情況(與top等相反)。

一般情況下,這是真的很難說沒有自己做一些測試 - 內存使用量可以根據你的應用程序實際上沒有和西納特拉並不一定意味着更小的內存佔用很大的不同。

例如,如果你正在使用的ActiveRecord,模型是由框架生產緩存以減少加載時間。這將獨立於您正在使用的應用程序框架而發生。

可能有一些事情可以做,來調整你的Rails堆棧,但。

實驗Ruby版本。與乘客一起使用時,REE可能具有一些記憶效益。 Ruby 1.9.2有很多性能改進。

看一看乘客內存選項:

  • passenger_spawn_method
  • passenger_max_pool_size

你可以做的另一件事就是刪除了Rails的未使用部分堆棧本身(使用各種Rails Rack options )。