gpt4 book ai didi

ruby-on-rails - 空 Rails 应用程序中的内存无限增长

转载 作者:行者123 更新时间:2023-12-03 00:45:38 25 4
gpt4 key购买 nike

我不明白为什么我的 Rails 应用程序(托管在 Heroku (cedar) 上)不断分配越来越多的内存。如果我不知道的话,我会说这是 Ruby/Rails 中的内存泄漏,但由于我对 Ruby/Rails 完全陌生,我觉得我错过了一些完全明显的东西。

我正在使用由rails new生成的Rails默认值,以及完全最新的gems:

source 'https://rubygems.org'

gem 'rails', '3.2.8'

group :development do
gem 'sqlite3'
end

group :assets do
gem "sass-rails", "~> 3.2.5"
gem "coffee-rails", "~> 3.2.2"
gem "uglifier", "~> 1.3.0"
end

gem "jquery-rails", "~> 2.1.2"

group :production do
gem 'newrelic_rpm'
gem "pg", "~> 0.14.1"
end

我正在使用default newrelic config 。我有零个模型和一个 Controller ,nothing_controller.rb,它是使用 railsgeneratecontrollerno 生成的:

class NothingController < ApplicationController
def index
end
end

我删除了public/index.html并添加了一个空的views/nothing/index.html.erb。我对生成的应用程序所做的唯一一件事是将路由添加到routes.rb:

Nothing::Application.routes.draw do
root :to => "nothing#index"
end

我提交了,将其推送到 Heroku,然后编写了一个快速脚本,每 10 秒加载我的 Heroku 页面。这是我的 New Relic 报告的内容:

/image/cbm4k.png

这就是全部内容了。内存就这样不断增加,直到超过 Heroku 的 512MB 限制。这个应用程序中的代码与我见过的代码几乎相同in the tutorial I followed 。我不明白我做错了什么。

任何指导将不胜感激。

编辑(9/12):如果相关的话,我使用的是 ruby​​ 1.9。

我用来访问服务器的代码(C#):

using (var wc = new WebClient())
for (;; Thread.Sleep(10000))
wc.DownloadString("http://vast-earth-9859.herokuapp.com/");

编辑(9/13):尝试禁用 New Relic 并查看它是否仍然是 R14。

最佳答案

尝试删除新遗物 gem 。我在 Heroku 上也遇到了同样的问题,罪魁祸首是 newrelic gem。您可以检查当前对象即内存。下面的代码显示了对象计数。

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

关于ruby-on-rails - 空 Rails 应用程序中的内存无限增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com