Pamięć rośnie w nieskończoność w pustej aplikacji Rails
Nie wiem, dlaczego moja aplikacja Rails (hostowana na Heroku (cedr)) przydziela coraz więcej pamięci. Gdybym nie wiedział lepiej, powiedziałbym, że to przeciek pamięci w Ruby / Rails, ale ponieważ jestem całkowicie nowy w Ruby / Rails, czuję, że brakuje mi czegoś zupełnie oczywistego.
Używam domyślnych Railsów generowanych przezrails new
i całkowicie aktualne klejnoty:
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
Używamdomyślna konfiguracja newrelic. Mam modele zerowe i jeden kontroler,nothing_controller.rb
, który został wygenerowany za pomocąrails generate controller nothing
:
class NothingController < ApplicationController
def index
end
end
Usunąłempublic/index.html
i dodał pustyviews/nothing/index.html.erb
. Jedyną inną rzeczą, jaką zrobiłem w wygenerowanej aplikacji, było dodanie trasy doroutes.rb
:
Nothing::Application.routes.draw do
root :to => "nothing#index"
end
Popełniłem, pchnąłem ją do Heroku, a następnie napisałem szybki skrypt, który ładował moją stronę Heroku co 10 sekund. Oto, co mowi mój Nowy Relikt:
To wszystko. Pamięć ciągle się powiększa, aż przekroczy limit 512 MB Heroku. Kod w tej aplikacji jest prawie taki sam jak kod, który widziałemw samouczku, za którym poszedłem. Nie rozumiem, co robię źle.
Wszelkie wskazówki byłyby bardzo mile widziane.
EDIT (9/12): W przypadku, gdy jest to istotne, używam ruby 1.9.
Kod używam do trafienia na serwer (C #):
using (var wc = new WebClient())
for (;; Thread.Sleep(10000))
wc.DownloadString("http://vast-earth-9859.herokuapp.com/");
EDYCJA (9/13): Próba wyłączenia nowego reliktu i sprawdzenia, czy nadal działa R14.