如何在Heroku上的Rails应用程序中防止R14错误和交换内存使用?

时间:2016-12-14 16:41:49

标签: ruby-on-rails memory heroku puma

我的问题:
这是内存膨胀,内存泄漏或服务器配置错误的示例吗?

首先,我将添加内存使用情况的屏幕截图

enter image description here

如您所见,我一直在使用交换内存。

此外,根据Heroku文档设置我的Puma服务器config / puma.rb文件后,我得到一个恒定的平台,然后增加内存。

我正在运行业余爱好者dyno 1x(512 mb),有0名工人。

我的WEB_CONCURRENCY变量设置为1

我的RAILS_MAX_THREADS也设置为1

MIN_THREADS也设置为1

这是我的config / puma.rb文件

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  ActiveRecord::Base.establish_connection
end

我正在使用脱轨的宝石测量我的宝石中的内存使用情况。

我正在使用rack-mini-profiler& memory_profiler基于每页进行测量。

允许应用程序运行后,具体如下:

enter image description here

正如您所看到的,应用程序未超出其限制。如果有人有任何有意义的建议,请随时回答这个问题。

1 个答案:

答案 0 :(得分:0)

上面提到的dyno和puma正在制作这份报告。

enter image description here

所以,我们现在偶尔只使用交换内存,不超过几MB,只是偶尔会达到23 MB。该应用程序使用了很多宝石,你可以看到我们保持在512 MB的限制之下。

我使用了Heroku的以下文档:
正确配置您的Puma服务器
https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server

对于R14内存错误
https://devcenter.heroku.com/articles/ruby-memory-use