GC Hacks for Ruby
A plugin for Rails which allows one to obtain heap dumps from a running rails app for example. It should work for mongrel and passenger hosted apps.
Author
Stefan Kaes <[email protected]>
Usage
Obtain the processid of a rails process, then invoke one of the following commands:
-
start_gc_trace pid # turns on gc tracing in the given process
-
stop_gc_trace pid # stop gc tracing
-
dump_heap pid # dump current heap to “#tmp_dir/heap.#Process.pid.#@heap_dump_count.dump”
Prerequisites
You won’t have much fun with this code unless you use a patched ruby which supports dumping heap information, compiled with GC_DEBUG enabled.
I recommend my patched version of ruby 1.8.7, which you can get as follows:
git clone git://github.com/skaes/matzruby.git
cd matzruby
git checkout ruby187pl202patched
autoconf
./configure --enable-gcdebug --prefix=/usr/local/ruby187pl202
make
sudo make install
sudo make install-doc
Installation
Place it in vendor/plugins, as usual.
Acknowledgments
Development of this plugin was sponsored by Xing (www.xing.com)
TODO
-
I think this code should be a gem.
-
move railsbench analyze_heap_dump command into the gem.