Se stai usando Linux, puoi installare l'utilità "strace" per vedere cosa sta facendo il processo Ruby che sta consumando tutta la CPU. Questo ti darà una buona visione di basso livello. Dovrebbe essere disponibile nel tuo gestore di pacchetti. Poi si può:
$ sudo strace -p 22710
Process 22710 attached - interrupt to quit
...lots of stuff...
(press Ctrl+C)
Poi, se si desidera interrompere il processo in mezzo e scaricare una traccia dello stack, è possibile seguire la guida sull'utilizzo GDB in Ruby a http://eigenclass.org/hiki.rb?ruby+live+process+introspection, in particolare facendo:
gdb --pid=(ruby process)
session-ruby
stdout_redirect
(in other terminal) tail -f /tmp/ruby_debug.(pid)
eval "caller"
È inoltre possibile utilizzare la gemma ruby-debug di connettersi in remoto a prese di debug si apre, descritti in http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger
ci sembra anche essere un progetto su Github occupa di debug istanze passeggeri che sembra interessante, ma il documentat Manca lo ione: http://github.com/ddollar/socket-debugger/tree/master
fonte
2009-03-24 21:17:33
per me questo accade solo quando riavvio apache per le prime richieste - una volta che il processo fa quello che sta facendo l'applicazione funziona bene. Ma può richiedere da 10 minuti (senza traffico) a 3-6 ore (con traffico) che arrivano al sito - per me questa non è un'opzione, ma vorrei capire cosa sta succedendo e perché succede – Spasm