zombocom/derailed_benchmarks

Unable to profile Rack app

Closed this issue · 4 comments

Hi, I'm following the README and issue #1 and trying to profile Sidekiq::Web on its own. Looks like maybe there's a missing require to pull in rack/test?

11: from /Users/mikeperham/.gem/ruby/2.7.1/gems/rake-13.0.3/lib/rake/task.rb:199:in `synchronize'
	10: from /Users/mikeperham/.gem/ruby/2.7.1/gems/rake-13.0.3/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
	 9: from /Users/mikeperham/.gem/ruby/2.7.1/gems/rake-13.0.3/lib/rake/task.rb:281:in `execute'
	 8: from /Users/mikeperham/.gem/ruby/2.7.1/gems/rake-13.0.3/lib/rake/task.rb:281:in `each'
	 7: from /Users/mikeperham/.gem/ruby/2.7.1/gems/rake-13.0.3/lib/rake/task.rb:281:in `block in execute'
	 6: from /Users/mikeperham/.gem/ruby/2.7.1/gems/derailed_benchmarks-2.0.0/lib/derailed_benchmarks/load_tasks.rb:92:in `block (2 levels) in <top (required)>'
	 5: from /Users/mikeperham/.gem/ruby/2.7.1/gems/derailed_benchmarks-2.0.0/lib/derailed_benchmarks/core_ext/kernel_require.rb:86:in `require'
	 4: from /Users/mikeperham/.gem/ruby/2.7.1/gems/derailed_benchmarks-2.0.0/lib/derailed_benchmarks/core_ext/kernel_require.rb:29:in `require'
	 3: from /Users/mikeperham/.gem/ruby/2.7.1/gems/derailed_benchmarks-2.0.0/lib/derailed_benchmarks/core_ext/kernel_require.rb:65:in `measure_memory_impact'
	 2: from /Users/mikeperham/.gem/ruby/2.7.1/gems/derailed_benchmarks-2.0.0/lib/derailed_benchmarks/core_ext/kernel_require.rb:30:in `block in require'
	 1: from /Users/mikeperham/.gem/ruby/2.7.1/gems/dead_end-1.1.4/lib/dead_end/auto.rb:21:in `require'
/Users/mikeperham/.gem/ruby/2.7.1/gems/dead_end-1.1.4/lib/dead_end/auto.rb:21:in `require': cannot load such file -- rack/test

Here's my perf.rake:

require 'bundler'
Bundler.setup

require 'derailed_benchmarks'
require 'derailed_benchmarks/tasks'

namespace :perf do
  task :rack_load do
    require 'sidekiq/web'

    # A Web process always runs as client, no need to configure server
    Sidekiq.configure_client do |config|
      config.redis = { url: 'redis://localhost:6379/0', size: 1 }
    end

    Sidekiq::Client.push('class' => "HardWorker", 'args' => [])

    # In a multi-process deployment, all Web UI instances should share
    # this secret key so they can all decode the encrypted browser cookies
    # and provide a working session.
    # Rails does this in /config/initializers/secret_token.rb
    app = Sidekiq::Web.new
    app.use Rack::Session::Cookie, secret: File.read("secret.key"), same_site: true, max_age: 86400
    DERAILED_APP = app
  end
end

Looks like d_b needs a dependency on the rack-test gem to require rack/test.

Sorry about that. I've got a pr running against CI now #187.

Did everything else work out? Any other problems or issues? Also I'm in Nate's perf slack for higher bandwidth if you need.

Nah, once I added rack-test myself I was able to see memory usage. 👍🏻

2.0.1 is out with this fix