Commit 2dcfb3a0d00aecf46d2fcb77bda57a86397054eb
1 parent
9ed7bab9
Exists in
master
and in
23 other branches
Log periodically memory consumption
(ActionItem3090)
Showing
2 changed files
with
31 additions
and
0 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,5 @@ |
| 1 | +if Delayed::Backend::ActiveRecord::Job.table_exists? | |
| 2 | + jobs = Delayed::Backend::ActiveRecord::Job.all :conditions => ['handler LIKE ?', "%LogMemoryConsumptionJob%"] | |
| 3 | + jobs.map(&:destroy) if jobs.present? | |
| 4 | + Delayed::Backend::ActiveRecord::Job.enqueue(LogMemoryConsumptionJob.new) | |
| 5 | +end | ... | ... |
| ... | ... | @@ -0,0 +1,26 @@ |
| 1 | +class LogMemoryConsumptionJob < Struct.new(:last_stat) | |
| 2 | + # Number of entries do display | |
| 3 | + N = 20 | |
| 4 | + # In seconds | |
| 5 | + PERIOD = 10 | |
| 6 | + | |
| 7 | + def perform | |
| 8 | + logpath = File.join(Rails.root, 'log', "#{ENV['RAILS_ENV']}_memory_consumption.log") | |
| 9 | + logger = Logger.new(logpath) | |
| 10 | + stats = Hash.new(0) | |
| 11 | + ObjectSpace.each_object {|o| stats[o.class.to_s] += 1} | |
| 12 | + i = 1 | |
| 13 | + | |
| 14 | + logger << "[#{Time.now.strftime('%F %T %z')}]\n" | |
| 15 | + stats.sort {|(k1,v1),(k2,v2)| v2 <=> v1}.each do |k,v| | |
| 16 | + logger << (sprintf "%-60s %10d", k, v) | |
| 17 | + logger << (sprintf " | delta %10d", (v - last_stat[k])) if last_stat && last_stat[k] | |
| 18 | + logger << "\n" | |
| 19 | + break if i > N | |
| 20 | + i += 1 | |
| 21 | + end | |
| 22 | + logger << "\n" | |
| 23 | + | |
| 24 | + Delayed::Job.enqueue(LogMemoryConsumptionJob.new(stats), 0, PERIOD.seconds.from_now) | |
| 25 | + end | |
| 26 | +end | ... | ... |