Add rake task to gather `GC.stat` for Sidekiq.

This commit is contained in:
Guo Xiang Tan 2017-04-21 17:31:19 +08:00
parent 6d6e208037
commit 15e2f55655
1 changed files with 21 additions and 0 deletions

21
lib/tasks/gc.rake Normal file
View File

@ -0,0 +1,21 @@
desc "Returns `GC.stat` for each Sidekiq process in JSON"
task "sidekiq:gc_stat" do
pids = `ps -eo pid,args | grep ' [s]idekiq ' | awk '{print $1}'`.split("\n").map(&:to_i)
results = []
hostname = `hostname`.chomp
pids.each do |pid|
tmp_path = Tempfile.new.path
system(
"bundle exec rbtrace -p #{pid} -e \"o = GC.stat; f = File.open('#{tmp_path}', 'w'); f.write(o.to_json); f.close\"",
out: "/dev/null", err: "/dev/null"
)
result = JSON.parse(File.read(tmp_path))
result["hostname"] = hostname
results << result
end
puts results.to_json
end