Ode*_*rth 9 memory ruby-on-rails heroku
我的rails应用程序使用了太多内存:
Process running mem=701M(136.9%)
Error R14 (Memory quota exceeded)
Run Code Online (Sandbox Code Playgroud)
在我解决问题之前,如何增加heroku的内存大小?
添加更多网络动态是否有助于分裂内存?
谢谢
我和我的一个客户有同样的问题.有时挖掘内存泄漏可能是一项艰巨的任务,尤其是当泄漏源可能是第三方代码时.
我所做的是每几个小时重新启动几个dynos.我选择了非高流量时间进行重启.
创建一个cron:
namespace :utils do
desc "Restart app by process and time table"
task :restart => :environment do
time_hash = {
1 => %w[web.1 web.2 web.3],
3 => %w[web.4 web.5 web.6],
5 => %w[web.7 web.8 web.9],
7 => %w[web.10 web.11 web.12],
16 => %w[web.13 web.14 web.1],
18 => %w[web.2 web.3 web.4],
20 => %w[web.5 web.6 web.7],
22 => %w[web.8 web.9 web.10],
0 => %w[web.11 web.12 web.13 web.14],
}
processes = time_hash[Time.now.hour]
processes.each {|process| restart_process(process)} if processes
end
def restart_process(name)
puts "restarting process #{name}:"
heroku = Heroku::Client.new(ENV['APP_USERNAME'], ENV['APP_PASSWORD'])
heroku.ps_restart(ENV['APP_NAME'], :ps => name)
end
end
Run Code Online (Sandbox Code Playgroud)使用每小时调度程序(heroku addon)来运行此cron.
你不能.Dynos有512M.B的配额,即使你得到更多的dynos,你仍会击中同一面墙.修复内存泄漏.
每个dyno都有512MB内存可供使用.大多数应用程序都可以轻松适应这种限制,作为开发人员,您根本不必担心内存.
在某些情况下,您的dyno可能会达到或超过512MB的数量.通常这是因为应用程序中存在内存泄漏,在这种情况下,您可能希望使用内存分析工具(如Oink for Ruby或Heapy for Python)来跟踪泄漏并修复它.
超过512MB内存使用量的Dynos将在日志中显示R14错误,如下所示:
从文档来看,是的。应该可以这样吧..
“每个测功机都有 512MB 的内存来运行。”
http://devcenter.heroku.com/articles/dynos
归档时间: |
|
查看次数: |
4824 次 |
最近记录: |