【发布时间】:2012-08-03 21:46:11
【问题描述】:
使用 Sinatra 应用程序设置 api。
每个请求为 15MB。每次我刷新页面时,它都会增加 15MB 的内存。每次请求后如何清除信息?
require 'rubygems'
require 'sinatra'
require 'active_record'
require 'mysql2'
require 'json'
client = Mysql2::Client.new(adapter: 'mysql2', host: '127.0.0.1', database: 'dev_app', username: 'root', password: 'root')
get '/people' do
q = "select name, age from people;"
people = client.query(q, :as => :json).map{|one| {one['name'] => one['age'].to_i}}
return people.to_json
people = nil
end
【问题讨论】:
-
你是如何知道内存去向的?您的 JSON 对象和 MySQL 连接有多大?您是否对您的应用程序进行了概要分析?这是由于内存限制导致的现实性能问题,还是只是抽象问题?
-
从 Ruby PID 监控内存。我让它去,直到它达到 500+ MB。目前 JSON 对象为 @ 50K,但会增长。这对我来说是个问题,因为我想将内存保持在 100MB 以下,这样我就可以在 AWS 中运行多个实例。至于分析,现在尝试这样做,但这是我第一次尝试使用 Sinatra,所以试图弄清楚我需要导入什么。
标签: ruby activerecord sinatra