带有Memcached的Radiant和NewRelic不会记录流量

时间:2012-11-09 05:21:00

标签: ruby-on-rails ruby memcached newrelic radiant

我使用Memcached作为Radiant缓存资源设置了Radiant实例,但是,似乎没有将缓存命中记录到Radiant。

以下是缓存实现的示例:

# file: :rails_root/config/environments/[RAILS_ENV].rb
require 'dalli'
$cache = Dalli::Client.new(["remotehost.com:11211", "127.0.0.1:11211"], :compress => true)
config.middleware.use ::Radiant::Cache, :metastore => $cache, :entitystore => $cache

当我在Radiant实例上加载(通过httperf)时,只有缓存未命中在NewRelic中注册。

::编辑::

有些事情值得注意:

  1. 我正在使用nginx和独角兽。
  2. 我目前要求:rails_root/config.ru中的newrelic如此:

    begin
      require 'newrelic_rpm'
      NewRelic::Agent.after_fork(:force_reconnect => true)
    rescue LoadError
      # proceed without NewRelic
    end
    
  3. 我正在使用bundler,这是我的Gemfile示例:

    source "http://my_gem_server"
    source :rubygems
    
    gem "radiant", "~> 1.1.0"
    gem 'unicorn'
    gem 'therubyracer', '~> 0.9'
    gem 'newrelic_rpm'
    gem 'rack-cache'
    gem 'dalli'
    gem "compass-rails", "~> 1.0.3"
    group :extensions do
      # radiant extensions
      gem "radiant-archive-extension",             "~> 1.0.7"
      gem "radiant-clipped-extension",             "~> 1.1.0"
      gem "radiant-debug-extension",               "~> 1.0.2"
      gem "radiant-exporter-extension",            "~> 1.1.0"
      gem "radiant-markdown_filter-extension",     "~> 1.0.2"
      gem "radiant-snippets-extension",            "~> 1.1.0"
      gem "radiant-site_templates-extension",      "~> 1.0.4"
      gem "radiant-smarty_pants_filter-extension", "~> 1.0.2"
      gem "radiant-textile_filter-extension",      "~> 1.0.4"
    
      # additional extensions
      gem "radiant-index_page-extension",          "~> 1.0.1"
      gem "radiant-vapor-extension",               "~> 2.1.4"
      gem "radiant-reorder_children-extension",    "~> 1.0.6"
      gem "radiant-layouts-extension",             "~> 1.1.3"
      gem "radiant-sibling_tags-extension",        "~> 0.2.1"
      gem "radiant-if_param_tags-extension",       "~> 1.0.1"
      gem "radiant-cache_buster-extension",        "~> 0.0.1"
    
      # forked extensions
      gem "radiant-sheets-extension",              "1.1.0my1"
    end
    
  4. 我试过的东西:
    • 将newrelic的需要代码移动到config.ru的顶部和底部。
    • gem "newrelic_rpm"移至我的Gemfile的顶部和底部(底部为:https://newrelic.com/docs/ruby/does-new-relic-work-with-the-bundler-gem
    • 将newrelic的需求代码移至:rails_root/config/enivornments/[RAILS_ENV].rb
    • 的底部
    • 移动newrelic需要代码到:rails_env/config/boot.rb:rails_env/config/environment.rb - 顶部和底部。
    • 使用newrelic_rpm
    • 在Gemfile中明确要求gem "newrelic_rpm", :require => 'newrelic_rpm'
  5. :: /编辑::

    有人有什么想法吗?

    谢谢!

1 个答案:

答案 0 :(得分:0)

与NewRelics支持人员合作后,他们让我发了这篇文章:http://newrelic.github.com/rpm/NewRelic/Agent/Instrumentation/Rack.html

然后,我稍微解构了这个方法并提出了以下解决方案:

https://gist.github.com/4076773