【问题标题】:Rails 4, Ruby 2.1 apparent memory leak on sign_in/sign_outRails 4、Ruby 2.1 在 sign_in/sign_out 上出现明显的内存泄漏
【发布时间】:2014-06-09 17:23:06
【问题描述】:

我在 Heroku 上有一个非常普通的 Rails 4、Ruby 2 应用程序。一段时间后我注意到 R14 错误,我找到了一个增加内存到 sign_in/sign_out 的来源。因此,如果我登录用户然后注销,我会看到内存增加 1mb,有时增加 10mb。如果我继续对同一个用户进行签名和注销,内存就会不断增加。

更多细节:

  • 设计 3.2.4、Papertrail、Rollbar
  • Dalli 商店 / Memcachier
  • 会话持续 90 分钟
  • 会话中没有任何内容
  • 登录后,用户被重定向到大部分缓存的欢迎页面
  • NewRelic 除了增加内存使用率之外没有提供太多信息
  • Heroku 日志运行时指标已启用
  • 只运行 1 个 Unicorn worker(因为内存不足,想运行 2 或 3 个)
  • 2 db 连接池,按照 Heroku 的建议,每 10 秒获取一次连接

我用它来识别字符串和数组在每次登录/登录/退出时增加 1,000 个字符串,500 个数组:

ObjectSpace.each_object.with_object(Hash.new(0)){|obj, h| h[obj.class] +=1 }.select{|k,v| puts "#{k} = #{v}"}

我想我的主要问题是,如果我使用 Dalli 存储/Memcachier 进行会话,那么当用户登录时是否会对 Dyno 内存产生任何影响?我的假设是否定的。有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: ruby-on-rails heroku memory-leaks devise


    【解决方案1】:

    您使用的是 ruby​​ 2.1.1 还是 2.1.2?我在 ruby​​ 2.1.1 上遇到了内存问题,升级到 2.1.2 有帮助。你可以在这里阅读更多: http://samsaffron.com/archive/2014/04/08/ruby-2-1-garbage-collection-ready-for-production

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      相关资源
      最近更新 更多