2010-06-04 190 views
5

我的Ruby on Rails應用程序消耗大約129 MB的內存..這是正常的嗎?Ruby on Rails應用程序應占用多少內存?

我每天約3000獨立訪客,我也沒有複雜的查詢......

我的用戶表有大約18K行。

+0

你在哪個應用程序服務器上運行? – x1a4 2010-06-04 06:28:02

+0

你的服務器上有多少內存。 129真的很低。 – 2010-06-04 08:40:03

+0

雜種..我有4GB '根@ veraserver01 [〜]#免費 總使用的無共享緩衝器緩存 號負責:4149500 3959880 189620 0 261532 1556064 -/+緩衝器/高速緩存:2142284 2007216 交換:2096440 116 2096324' 這是問題嗎? – Will 2010-06-05 08:08:25

回答

4

129MB對我來說似乎不算太多,我發現更重要的是這個數字會隨着時間的推移而增長嗎?

如果是這樣的問題,可能是你如何你的數據集的多加載到內存中的請求

退房:http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/

在breif

:實例太多的活動記錄的對象是一個地方,軌道應用程序的內存佔用真正增長。

如果在一個請求中,出於某種原因你要迭代所有18k用戶,更糟糕的是,迭代所有帖子(或者你有的任何關聯),你會實例化一大堆對象,應該)在請求之後被清除,但是ruby在分配之後不會將內存回送給系統。

+1

感謝您的迴應丹尼斯,我有一個問題,雖然..有多少活動記錄對象太多 我不重複所有18K用戶,但我更新64個活動記錄對象(一個接一個)時,用戶保存一個特定的形式......我應該在單個查詢中更新嗎? 另一件事是,我的Rails應用程序不斷崩潰......它說:「[FATAL]未能分配內存」 – Will 2010-06-04 07:22:01

+1

每個保存更新查詢過多 – 2010-06-04 08:46:59

+0

這取決於對象有多大,但你應該能夠處理有成千上萬的物體。 當你做更新時,你是否在對象上執行「:include =>」的操作? 試圖找到一個更有效的方式來做到這一點,而不是64個其他對象的64更新似乎是聰明的。 做什麼特別讓你的應用程序崩潰? 你的服務器有多少內存?你沒有嗎?應用程序何時啓動/在它死前有多大?在谷歌搜索這個致命的錯誤。 再次,這些傢伙比我聰明。 http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/ – 2010-06-04 19:25:43

0

我見過軌應用程序高達500MB。我敢肯定,更大的存在。唯一訪問者和數據庫查詢不是內存使用的原因。這是Ruby中昂貴且大容量的內存計算。

嘗試AB測試其中一些方法,並查看您的內存使用量有多高。這可能會解決一些內存問題。