rails r14 node exceeded error ruby-on-rails ruby heroku ruby-on-rails-4 memory-leaks

ruby-on-rails - r14 - heroku dashboard login



Rails 4 Error R14 en Heroku(se excedió la cuota de memoria) (5)

He estado obteniendo el (aparentemente común) Error R14 , no estoy seguro de cuándo comenzó pero me di cuenta después de instalar el complemento Papertrail. También agregué oink después de ver a otros mencionarlo. He intentado todo lo que otros han intentado en otras preguntas de SO, pero parece que no puedo encontrar el problema / pérdida de memoria.

Error R14 (Memory quota exceeded) heroku/web.1: Process running mem=587M(114.7%)

Cuando veo esto, para solucionarlo temporalmente, heroku restart que funciona por un tiempo pero quiero solucionar este problema permanentemente.

Según lo que puedo ver en Papertrail, la aplicación simplemente sigue cargando la misma página (página de inicio) una y otra vez (y no es tráfico de usuarios):

app/web.1: Completed 200 OK in 436ms (Views: 45.5ms | ActiveRecord: 386.2ms) app/web.1: May 25 18:14:52 5d2105e1-d799-4496-a2af-3785e78998db rails[9]: Oink Action: static_pages#home app/web.1: May 25 18:14:52 5d2105e1-d799-4496-a2af-3785e78998db rails[9]: Memory usage: 378860 | PID: 19 app/web.1: May 25 18:14:52 5d2105e1-d799-4496-a2af-3785e78998db rails[9]: Oink Log Entry Complete heroku/web.1: source=web.1 dyno=heroku.25566769.9d9a3da0-db4c-4b51-bc53-b69be9e43cb7 sample#memory_total=209.86MB sample#memory_rss=209.83MB sample#memory_cache=0.02MB sample#memory_swap=0.00MB sample#memory_pgpgin=59278pages sample#memory_pgpgout=5555pages

y después de 2 minutos:

heroku/web.1: source=web.1 dyno=heroku.25566769.9d9a3da0-db4c-4b51-bc53-b69be9e43cb7 sample#memory_total=293.73MB sample#memory_rss=291.94MB sample#memory_cache=0.02MB sample#memory_swap=1.77MB sample#memory_pgpgin=80890pages sample#memory_pgpgout=6147pages `

También habilité heroku labs:enable log-runtime-metrics partir de las instrucciones de otra pregunta here y de Heroku here

También agregué el complemento New Relic y esto es lo que veo en la pestaña Supervisión> Instancias:

Para los últimos 7 días:

Para las últimas 24 horas:

Estoy confundido como se puede ver después de 5/24 el uso de la memoria se redujo y desde entonces se mantuvo inactivo, pero en los registros muestra la memoria mem=587M(114.7%) y en las últimas 24 horas un promedio de 150M, entonces No entiendo lo que está pasando. Espero que alguien pueda ayudar. Gracias.

Actualización 1: Gemfile agregado

#Gemfile source ''https://rubygems.org'' ruby ''2.1.1'' gem ''rails'', ''4.1.1'' gem ''puma'', ''~> 2.8.2'' gem ''turbolinks'', ''~> 2.2.2'' gem ''pg'', ''~> 0.17.1'' gem ''rack-attack'', ''~> 4.0.1'' gem ''memcachier'' gem ''dalli'', ''~> 2.7.1'' gem ''oink'' gem ''fog'', ''~> 1.22.0'' gem ''activeadmin'', github: ''gregbell/active_admin'' gem ''dynamic_sitemaps'', ''~> 2.0.0'' gem ''whenever'', :require => false gem ''cancancan'', ''~> 1.8.0'' gem ''mini_magick'', ''~> 3.7.0'' gem ''carrierwave'', ''~> 0.10.0'' gem ''devise'', ''~> 3.2.4'' gem ''rolify'', ''~> 3.4.0'' gem ''simple_form'', ''~> 3.0.2'' gem ''cocoon'', ''~> 1.2.6'' gem ''friendly_id'', ''~> 5.0.3'' gem ''nokogiri'', ''~> 1.6.2.1'' gem ''kaminari'' gem ''impressionist'', ''~> 1.5.1'' gem ''validate_url'' gem ''searchkick'', ''~> 0.7.5'' gem ''meta-tags'', ''~> 2.0.0'' gem ''newrelic_rpm'' group :assets do gem ''sass-rails'', ''~> 4.0.3'' gem ''bootstrap-sass'', ''~> 3.1.1.1'' gem ''uglifier'', ''~> 2.5.0'' gem ''coffee-rails'', ''~> 4.0.1'' gem ''asset_sync'' #gem ''jquery-turbolinks'' gem ''jquery-rails'' gem ''jbuilder'', ''~> 2.0.7'' end group :production do gem ''rails_12factor'' end

Actualización 2: servidor cambiado de Puma a Unicornio

Fue bastante simple, siguiendo las instrucciones here . Y esto es lo que parece ahora, lo que parece bueno, pero sospecho que fue porque la aplicación se reinició:

# after heroku restart heroku/web.1: source=web.1 dyno=heroku.25566769.3770e52a-ddf3-485a-a88a-ac4fd54ab640 sample#memory_total=123.62MB # after 4 minutes heroku/web.1: source=web.1 dyno=heroku.25566769.3770e52a-ddf3-485a-a88a-ac4fd54ab640 sample#memory_total=276.48MB

Actualización 3: bajó la cantidad de trabajadores de Unicornio a 2

Después de hacer eso, este es el uso promedio de memoria por dyno / instancia durante las últimas 6 horas según New Relic:

Y la salida en PaperTrain (y también intenté LogEntries) fue esta:

app/web.1: May 26 19:54:08 21ae35ee-5656-4254-9f12-5dc6bb59efa1 rails[6]: Memory usage: 426076 | PID: 6 app/web.1: May 26 19:54:08 21ae35ee-5656-4254-9f12-5dc6bb59efa1 rails[6]: Oink Log Entry Complete heroku/web.1: source=web.1 dyno=heroku.25566769.21ae35ee-5656-4254-9f12-5dc6bb59efa1 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00 heroku/web.1: source=web.1 dyno=heroku.25566769.21ae35ee-5656-4254-9f12-5dc6bb59efa1 sample#memory_total=431.99MB sample#memory_rss=406.85MB sample#memory_cache=0.10MB sample#memory_swap=25.04MB sample#memory_pgpgin=198612pages sample#memory_pgpgout=94432pages

Revisé los registros, y después de 1 hora recibí el error R14 y ahora ha estado subiendo muy poco, casi manteniendo constante a 432MB y ya no he recibido el error. ¡Así que esto parece haber solucionado el problema! Actualizaré con el tiempo si esto cambia.




Si Papertrail está causando un problema, pruebe con un complemento diferente. He estado usando LogEntries sin mucho problema. https://addons.heroku.com/#logging

También intente reducir los procesos de trabajo de Unicorn para que use menos memoria total. En lugar del valor predeterminado de 3 (por caja / dyno), pruebe 2.

https://devcenter.heroku.com/articles/rails-unicorn#unicorn-worker-processes

También puede ejecutar un generador de perfiles de memoria en su aplicación:

http://timetobleed.com/memprof-a-ruby-level-memory-profiler/

https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=profile


Si está utilizando Rails 4 con Ruby 2.1, apuesto a que el único cambio que necesita hacer es volver a cambiar a Ruby 2.0.

Pasé 2 días para resolverlo y se me ocurrió esta idea con las sugerencias de soporte de Heroku. Creo que es un error o algo así con Ruby 2.1 o Rails 4.

Actualización para abril de 2015:

En ese momento, la degradación funcionaba como una solución. Pero bueno, en realidad no es una forma recomendada de resolver problemas ... Algunas personas dicen que actualizar a Ruby 2.2.0 con Rails 4.2 disminuye significativamente el consumo de memoria. ¡Lo probaría!


Tuve un problema similar. Estoy usando Ruby 2.3.1 y Rails 4.2.6, Heroku con Unicornio. Después de dos variables de configuración no se establecieron en mi aplicación antes. Configurarlos desde la terminal con el siguiente comando resolvió el problema para mí.

heroku config:set sensible_defaults=disabled heroku config:set WEB_CONCURRENCY=1