首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Unicorn + Rack运行带外垃圾回收

使用Unicorn + Rack运行带外垃圾回收
EN

Stack Overflow用户
提问于 2012-11-20 07:31:09
回答 1查看 1.6K关注 0票数 7

我正在尝试在我的Ruby on Rails应用程序中运行带外垃圾收集(一旦请求完成其响应)。我在我的config.ru中添加了以下内容:

代码语言:javascript
复制
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment',  __FILE__)
begin
  require 'unicorn/oob_gc'
rescue LoadError, NameError
end
# Out-of-band GC, runs GC after every 10th request and after the response
# has been delivered.
begin
  use Unicorn::OobGC, interval=10
rescue NameError
end

run MyApp::Application

GC.start

然而,我正在查看我的NewRelic门户,大多数web事务确实表明平均至少花费110-150ms进行垃圾收集。Unicorn::OoobGC是否应该超出实际请求的范围?如果是,为什么会出现在web事务中?我如何在web请求的上下文之外花费时间进行垃圾收集,以便感知到的客户端响应时间更快?所花费的CPU时间仍然是相同的,因为它需要在后台发生,然而,在后台进行比阻止请求管道更好。

EN

回答 1

Stack Overflow用户

发布于 2012-11-20 08:43:19

如果单个请求分配了足够的对象来触发GC,那么尽管使用unicorn中间件移动了最终的gc OOB,您仍然会看到为该请求报告的GC时间。

使用ruby 1.9.3和REE,您可以旋转各种GC旋钮来帮助控制gc被触发的频率。有关设置RUBY_HEAP_MIN_SLOTS、RUBY_GC_MALLOC_LIMIT和RUBY_FREE_MIN的示例,请参阅Tuning the GC in Ruby 1.9.3,以便在长时间运行的服务应用程序中获得更好的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13464290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档