No puedo entender por qué mi aplicación Rails (alojada en Heroku (cedro)) sigue asignando más y más memoria. Si no supiera algo mejor, diría que es una pérdida de memoria en Ruby/Rails, pero como soy completamente nuevo en Ruby/Rails, siento que me falta algo completamente obvio.La memoria crece indefinidamente en una aplicación de Rails vacía
estoy usando valores por defecto Rails generados por rails new
y piedras preciosas por completo hasta a la fecha:
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
estoy usando el default newrelic config. Tengo cero modelos y un controlador, nothing_controller.rb
, que se generó utilizando rails generate controller nothing
:
class NothingController < ApplicationController
def index
end
end
Suprimí public/index.html
y añadido un vacío views/nothing/index.html.erb
. La única otra cosa que hice para la aplicación generada era añadir una ruta a routes.rb
:
Nothing::Application.routes.draw do
root :to => "nothing#index"
end
cometí, empujó a Heroku, a continuación, escribió un guión rápido que cargar mi página de Heroku cada 10 segundos. Esto es lo que mi nueva reliquia informa:
Eso es todo lo que hay que hacer. La memoria simplemente sigue aumentando así hasta que pasa el límite de Heroku de 512 MB. El código en esta aplicación es bastante similar al código que he visto in the tutorial I followed. No entiendo lo que estoy haciendo mal.
Cualquier orientación sería muy apreciada.
EDITAR (9/12): En caso de que sea relevante, estoy usando ruby 1.9.
Códigoque estoy usando para golpear el servidor (C#):
using (var wc = new WebClient())
for (;; Thread.Sleep(10000))
wc.DownloadString("http://vast-earth-9859.herokuapp.com/");
EDITAR (9/13): El ir a probar a desactivar New Relic y ver si todavía R14S.
Ver el código que llega a su servidor cada 10s estaría bien. – deefour
Claro. Adicional. Como nota al margen, la razón por la que decidí hacer esto fue porque una aplicación bastante básica que escribí tenía algún problema y se quedaría sin memoria después de ~ 400 visitas a la página. – user1650177
Prueba agregar Oink para monitorear lo que se está creando una instancia. RubyProf puede llevar algo de engaño, pero si logras que funcione, eso te dará más información. Generalmente, se supone que la memoria aumenta, esto es bueno. Además, se supone que es basura recolectada cuando no se usa con tanta frecuencia. – maletor