Class: SidekiqProfilingMiddleware::MemoryProfiler
- Inherits:
-
Object
- Object
- SidekiqProfilingMiddleware::MemoryProfiler
- Defined in:
- lib/sidekiq_profiling_middleware/memory_profiler.rb
Class Method Summary collapse
Instance Method Summary collapse
- #call(worker, msg, queue) ⇒ Object
-
#initialize(output_prefix: nil, only: nil, s3_bucket: nil, memory_profiler_options: {}) ⇒ MemoryProfiler
constructor
A new instance of MemoryProfiler.
Constructor Details
#initialize(output_prefix: nil, only: nil, s3_bucket: nil, memory_profiler_options: {}) ⇒ MemoryProfiler
Returns a new instance of MemoryProfiler.
7 8 9 10 11 12 13 |
# File 'lib/sidekiq_profiling_middleware/memory_profiler.rb', line 7 def initialize(output_prefix: nil, only: nil, s3_bucket: nil, memory_profiler_options: {}) @options = @output_prefix = output_prefix || self.class.default_output_prefix @only = only @s3_bucket = s3_bucket end |
Class Method Details
.default_output_prefix ⇒ Object
40 41 42 |
# File 'lib/sidekiq_profiling_middleware/memory_profiler.rb', line 40 def self.default_output_prefix @default_output_prefix ||= Util.default_output_prefix("memory_profiler") end |
Instance Method Details
#call(worker, msg, queue) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/sidekiq_profiling_middleware/memory_profiler.rb', line 15 def call(worker, msg, queue) # bail out if whitelist doesn't match if only && !only.include?(worker.class) return yield end report = ::MemoryProfiler.report() do yield end out = "#{output_prefix}#{Util.worker_names[worker.class]}_#{Util.current_epoch_ms}.txt" unless s3_bucket report.pretty_print(to_file: out) return end require "sidekiq_profiling_middleware/s3" out = S3::Object.new(bucket: s3_bucket, key: out) report.pretty_print(out) ensure out.upload if out && s3_bucket end |