Если вы используете Linux, вы можете установить утилиту "strace", чтобы увидеть, что делает процесс Ruby, который потребляет весь процессор. Это даст вам хороший обзор низкого уровня. Он должен быть доступен в вашем менеджере пакетов. Тогда вы можете:
$ sudo strace -p 22710
Process 22710 attached - interrupt to quit
...lots of stuff...
(press Ctrl+C)
Затем, если вы хотите остановить процесс посередине и вывести трассировку стека, вы можете следовать руководству по использованию GDB в Ruby по адресу http://eigenclass.org/hiki.rb?ruby+live+process+introspection,, в частности, выполнив:
gdb --pid=(ruby process)
session-ruby
stdout_redirect
(in other terminal) tail -f /tmp/ruby_debug.(pid)
eval "caller"
Вы также можете использовать гем ruby-debug для удаленного подключения к отладочным сокетам, которые вы открываете, как описано в http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger
Похоже, на Github также есть проект, связанный с отладкой экземпляров Passenger, который выглядит интересно, но в документации отсутствует:
http://github.com/ddollar/socket-debugger/tree/master