我不明白爲什麼我的Rails應用程序(託管在Heroku(雪松))繼續分配越來越多的內存。如果我不知道更好,我會說這是Ruby/Rails中的內存泄漏,但由於我對Ruby/Rails完全陌生,因此我覺得我錯過了一些完全明顯的東西。內存在一個空的Rails應用程序中無限增長
我使用rails new
產生Rails的默認值,並完全跟上時代的寶石:
source 'https://rubygems.org'
gem 'rails', '3.2.8'
group :development do
gem 'sqlite3'
end
group :assets do
gem "sass-rails", "~> 3.2.5"
gem "coffee-rails", "~> 3.2.2"
gem "uglifier", "~> 1.3.0"
end
gem "jquery-rails", "~> 2.1.2"
group :production do
gem 'newrelic_rpm'
gem "pg", "~> 0.14.1"
end
我使用的是default newrelic config。我具有零種模式和一個控制器,nothing_controller.rb
,其使用rails generate controller nothing
生成:
class NothingController < ApplicationController
def index
end
end
我刪除public/index.html
和加入的空views/nothing/index.html.erb
。我沒有到生成的應用程序的唯一的另一件事是添加路由到routes.rb
:
Nothing::Application.routes.draw do
root :to => "nothing#index"
end
我承諾,它被推到Heroku的,然後寫了一個快速腳本,將載入我的Heroku頁每10秒。這就是我的New Relic的報道:
這一切就是這麼簡單。內存只是繼續增加,直到它超過Heroku的限制512MB。這個應用程序中的代碼與我見過的代碼幾乎相同in the tutorial I followed。我不明白我做錯了什麼。
任何指導將不勝感激。編輯(9/12):如果它是相關的,我使用紅寶石1.9。我使用擊中服務器(C#)
代碼:
using (var wc = new WebClient())
for (;; Thread.Sleep(10000))
wc.DownloadString("http://vast-earth-9859.herokuapp.com/");
EDIT(9/13):去嘗試禁用New Relic的,看它是否仍然R14s。
看到每10秒鐘擊中你的服務器的代碼會很好。 – deefour
當然。添加。作爲一個方面說明,我決定這麼做的原因是因爲我寫的一個基本的應用程序有一些問題,並且在大約400次頁面瀏覽後會耗盡內存。 – user1650177
嘗試添加Oink來監視實例化的內容。 RubyProf可能會有一些挫折,但如果你能使它起作用,那將提供更多的洞察力。一般來說,記憶應該會增加 - 這很好。此外,它應該是垃圾收集時,它不經常使用。 – maletor