应用程序控制器中的变量是否会导致Rails中的内存泄漏?

我在Rails上有一个应用程序,我在Heroku上运行(每天查看1 000页的页面浏览量)。 自上周推出以来,我一直在经历频繁的应用程序崩溃。

看看New Relic,似乎Dynos的内存使用量不断增加,而不会降低内存使用率。 基本上,它会在几个小时内累积,然后以请求超时结束,这似乎很可能。

因此,我认为应用程序崩溃的问题是由于内存泄漏。

我的应用程序(presenttips.com)是一个礼品网站,我有“随机礼物”,“当天的礼物”和“横幅”等function。 这些我在应用程序控制器中加载如下:

before_filter :global_setup def global_setup # Create random gift rand_gift = [] rand_gift < 1) #=> Accepted @random_gift = rand_gift[0][rand(rand_gift[0].size) - 1] rand_gift = nil @nbr_of_active_gifts = (Gift.where(:gift_status_id => 1).count / 100 ).round * 100 @toplist = Gift.where(:gift_status_id => 1).order("week_click DESC").limit(20) @banners = Banner.where("first_date = '" + Time.now.to_date.to_s + "'").order("first_date ASC") advertise_here = [] (@banners.count..4).each do |i| advertise_here[i] = Banner.new(:advertiser => "Presenttips.com", :banner_image => "annons.jpg", :url => advertise_path) end @banners < Time.now.to_date).first gift_from_daily = DailyGift.create(:publish_date => Time.now.to_date, :gift_id => @random_gift.id) if gift_from_daily.blank? @daily_gift = Gift.find(gift_from_daily.gift_id) @head_categories = Category.order(:name).where(:parent_id => nil) todays_date = Time.now.to_date.to_s @season = Season.where("'" + todays_date + "' >= date_start ", "'" + todays_date + "' <= date_end" ).first @season_theme = @season.css @logo = 'logo.png' @logo = 'seasons/logo_christmas.png' if @season.css.eql?('theme_christmas.css') end 

这样我就可以在全球范围内的应用程序中使用它们(例如,当天的礼物,在右栏中始终是presenet)。

考虑到内存使用情况,我想这不是很好。

我的问题:

  1. 这可能会导致内存增加吗?
  2. 在这种情况下,做一个更聪明的方法是什么?

我删除了几乎所有这些变量,它仍然没有帮助。 我将假设应用程序控制器没有导致内存问题。