ruby-on-rails - 如何增加heroku的内存?

标签 ruby-on-rails memory heroku

我的 rails 应用占用了太多内存:

Process running mem=701M(136.9%)
Error R14 (Memory quota exceeded)

在我解决问题之前,如何增加 heroku 上的内存大小?

添加更多的 web 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
    
  2. 使用每小时调度程序(heroku 插件)来运行这个 cron。

关于ruby-on-rails - 如何增加heroku的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984748/

相关文章:

c - wmemcpy 有什么意义?

c - 动态分配char指针指针

heroku - 您可以通过管道传输到 `heroku run` 而不会回显文本吗?

ruby-on-rails - 生成现有数组的所有组合的数组

iphone - MPMoviePlayerController 释放问题

email - Heroku 上 Yesod 应用程序的邮件配置

heroku - Heroku docker:release:预期的响应会成功,得到422

html - 在 Ruby on Rails 中显示电子表格数据的最佳方式是什么?

ruby-on-rails - 在仅限 Rails 5 API 的应用程序中使用 Ransack

ruby-on-rails - 如何获取 ActiveRecords 跟踪的模型中 transient 属性的变化?