如何增加heroku的内存?

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的内存大小?

添加更多网络动态是否有助于分裂内存?

谢谢

ram*_*igg 8

我和我的一个客户有同样的问题.有时挖掘内存泄漏可能是一项艰巨的任务,尤其是当泄漏源可能是第三方代码时.

我所做的是每几个小时重新启动几个dynos.我选择了非高流量时间进行重启.

  1. 创建一个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)
  2. 使用每小时调度程序(heroku addon)来运行此cron.

  • 我刚刚将这个添加到我的部署中:这里是一个更通用的实现,它适用于_n_ web进程:https://gist.github.com/2955544 (2认同)

dan*_*iel 5

你不能.Dynos有512M.B的配额,即使你得到更多的dynos,你仍会击中同一面墙.修复内存泄漏.

每个dyno都有512MB内存可供使用.大多数应用程序都可以轻松适应这种限制,作为开发人员,您根本不必担心内存.

在某些情况下,您的dyno可能会达到或超过512MB的数量.通常这是因为应用程序中存在内存泄漏,在这种情况下,您可能希望使用内存分析工具(如Oink for Ruby或Heapy for Python)来跟踪泄漏并修复它.

超过512MB内存使用量的Dynos将在日志中显示R14错误,如下所示:


Adr*_*ian 2

从文档来看,是的。应该可以这样吧..

“每个测功机都有 512MB 的内存来运行。”

http://devcenter.heroku.com/articles/dynos

  • 那么您认为添加网络测功机可以暂时修复问题吗? (2认同)