相关疑难解决方法(0)

Rails app中的内存不断增加

我最近推出了一个新的Ruby on Rails应用程序,它在开发模式下运行良好.在发布之后,我一直在体验正在使用的内存不断增加:

来自New Relic的屏幕转储,Dyno内存使用情况

更新:当从New Relic进行此屏幕转储时. 我已经安排了每小时重启web dyno(两个web dynos中的一个). 因此,它没有达到500Mb的崩溃水平,它实际上得到了一些sig锯模式. 但问题根本没有得到解决,只有一些症状. 你可以看到早上不是那么忙,但下午更忙.

更新:当从New Relic获取此屏幕转储(下面的那个)时.我已经安排了每小时重启web dyno(两个web dynos中的一个).因此,它没有达到500Mb的崩溃水平,它实际上得到了一些sig锯模式.但问题根本没有得到解决,只有一些症状.你可以看到早上不是那么忙,但下午更忙.我在11.30上传了一个小细节,即使它在统计数据中显示也不会影响问题.

还可以注意到,即使图形显示AVG存储器,也是MIN存储器继续增加.即使图形似乎在图表中暂时下降,最小内存保持不变或增加.MIN记忆永不减少!

该应用程序将(没有dyno重新启动)内存增加,直到它达到Heroku的最高级别,并且应用程序崩溃执行过期类型的错误.

我不是一个优秀的程序员,但我之前已经制作了一些应用程序而没有这类问题.

执行故障排除

答:我认为问题在于application_controller中的before_filter(应用程序控制器中的变量会导致Rails中的内存泄漏吗?)但这不是问题.

B.我安装了oink但它没有给出任何结果(根本).它创建了一个oink.log,但是当我运行"heroku run oink -m log/oink.log"时,无论什么阈值都没有给出任何结果.

C.我尝试过bleak_house但它已被弃用,无法安装

D.我用谷歌搜索并阅读了主题中的大多数文章,但我不是更明智的.

E.我很想测试memprof但是我无法安装它(我有Ruby 1.9x并且不知道如何将它降级到1.8x)

我的问题:

Q1.我真正想知道的是每个请求增加的变量的名称,或者至少哪个控制器使用最多的内存.

Q2.一个控制器如下面的代码会增加内存吗?

related_feed_categories = []
@gift.tags.each do |tag|
  tag.category_connections.each do |cc|
    related_feed_categories << cc.category_from_feed
  end
end
Run Code Online (Sandbox Code Playgroud)

(抱歉,因为某些原因,所以不会重新格式化代码以便于阅读).

我之后是否需要使用"related_feed_categories = nil""kill""related_feed_categories"或垃圾收集器是否处理该问题?

Q3.我要找的主要内容是什么?现在我无法缩小范围.我不知道要深入研究哪部分代码,我真的不知道该寻找什么.

Q4.万一我真的无法解决问题.有没有在线咨询服务,我可以发送我的代码,让他们找到问题?

谢谢!

更新.收到评论后,它可能与会话有关.这是我认为可能不好的代码的一部分:

# Create sessions for last generation
friend_data_arr = [@generator.age, @generator.price_low, @generator.price_high]
friend_positive_tags_arr = []
friend_negative_tags_arr = []
friend_positive_tags_arr << @positive_tags
friend_negative_tags_arr << @negative_tags    
session["last_generator"] = [friend_data_arr, friend_positive_tags_arr, friend_negative_tags_arr]

# Clean …
Run Code Online (Sandbox Code Playgroud)

memory ruby-on-rails heroku

11
推荐指数
2
解决办法
7608
查看次数

标签 统计

heroku ×1

memory ×1

ruby-on-rails ×1