我的rails引擎中的内存问题?

时间:2011-11-18 18:24:53

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个非常小的Rails 3.1.1应用程序,以闪电般的方式存储内存。在应用程序中点击8-10次,我使用的RAM几乎达到1GB。

我们检查了日志中运行缓慢的MYSQL查询,没有任何内容。我们还检查了Apache日志,没有任何内容。

应用程序正在使用Passenger 3.0运行

这个问题可以绑定到一些使用的gem吗?此应用程序作为Rails 3.0.1应用程序启动,我们更新了rails版本。 gemfile中仍有[已弃用?]引用。这是gemfile:

gem "rails", "~> 3.1.1"
gem "mysql2", "~> 0.3.6"
gem 'omniauth', '0.2.6'
gem 'json'

group :assets do
  gem "sass-rails", "~> 3.1.4"
  gem "coffee-rails", "~> 3.1.1"
  gem 'uglifier'
end

gem 'jquery-rails'
gem 'execjs'
gem 'therubyracer'
gem 'capistrano'

由于

3 个答案:

答案 0 :(得分:2)

一切都是为了消除可能性。一些方向:

  • 应用程序是否在开发模式下运行?开发/生产模式下的内存使用量是否存在差异?
  • 尝试在一个控制器中停留在一个页面上。持续监控内存。它涨了吗?它只是一个控制器还是所有控制器?如果它只在一个控制器中,则需要检查较小的代码库。
  • 内存使用BleakhouseMemorylogicScoutNew Relic等工具对您的应用进行了分析。检查内存热点以找到内存占用。
  • 逐个消除依赖关系,以查看另一个gem中的错误是否导致问题。
  • 尝试使用其他服务器,例如Mongrel,WEBrick或Unicorn。如果行为不同,可能是乘客。
  • 尝试使用其他Ruby版本来查看问题是否仍然存在。

答案 1 :(得分:1)

因为therubyracer gem。

有乘客的热量记录器使内存泄漏。删除therubyracer gem或使用0.7.5版本

答案 2 :(得分:0)

而不是查询,检查低效查询 - 即从DB加载大量记录,创建大量对象,然后循环的类型在Ruby方面超过他们。

或者使用像New Relic这样的探查器。