Unable to profile Rack app
Closed this issue · 4 comments
mperham commented
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
mperham commented
Looks like d_b needs a dependency on the rack-test
gem to require rack/test
.
schneems commented
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.
mperham commented
Nah, once I added rack-test myself I was able to see memory usage. 👍🏻
schneems commented
2.0.1 is out with this fix