ran*_*its 7 ruby performance garbage-collection ruby-on-rails unicorn
我试图在我的Ruby on Rails应用程序中带外运行垃圾收集(一旦请求完成其响应).我将以下内容添加到我的config.ru中:
# 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
Run Code Online (Sandbox Code Playgroud)
然而,我正在查看我的NewRelic门户,并且大多数Web事务确实表明平均花费垃圾收集至少花费110-150ms.Unicorn :: OoobGC是否应该超出实际请求的范围?如果是,为什么这会出现在网络交易中?如何在垃圾收集上花费时间在Web请求的上下文之外,以便感知客户端响应时间更快?花费的CPU时间仍然是相同的,因为它需要在后台发生,但是,在后台比保持请求管道更好.
如果单个请求分配了足够的对象来触发 GC,尽管使用 unicorn 中间件移动了最终的 GC OOB,您仍然会看到为该请求报告的 gc 时间。
使用 ruby 1.9.3 和 REE,您可以调整各种 GC 旋钮来帮助控制触发 gc 的频率。有关设置 RUBY_HEAP_MIN_SLOTS、RUBY_GC_MALLOC_LIMIT 和 RUBY_FREE_MIN 的示例,请参阅在 Ruby 1.9.3 中调整 GC,以便在长时间运行的服务应用程序中获得更好的行为。
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |