Nếu bạn đang sử dụng Linux, bạn có thể cài đặt tiện ích "strace" để xem quá trình Ruby đang làm gì tiêu thụ tất cả CPU. Điều đó sẽ cho bạn một cái nhìn tốt ở mức độ thấp. Nó sẽ có sẵn trong trình quản lý gói của bạn. Sau đó, bạn có thể:
$ sudo strace -p 22710
Process 22710 attached - interrupt to quit
...lots of stuff...
(press Ctrl+C)
Sau đó, nếu bạn muốn dừng quá trình này ở giữa và đổ một đống dấu vết, bạn có thể làm theo các hướng dẫn về việc sử dụng GDB trong Ruby tại http://eigenclass.org/hiki.rb?ruby+live+process+introspection, cụ thể thực hiện:
gdb --pid=(ruby process)
session-ruby
stdout_redirect
(in other terminal) tail -f /tmp/ruby_debug.(pid)
eval "caller"
bạn cũng có thể sử dụng Gem ruby-debug để kết nối từ xa tới ổ cắm debug bạn mở lên, được mô tả trong http://duckpunching.com/passenger-mod_rails-for-development-now-with-debugger
Ngoài ra còn có vẻ là một dự án trên Github liên quan đến việc gỡ lỗi các trường hợp hành khách có vẻ thú vị, nhưng documentat ion thiếu: http://github.com/ddollar/socket-debugger/tree/master
Nguồn
2009-03-24 21:17:33
cho tôi điều này chỉ xảy ra khi tôi khởi động lại apache cho các yêu cầu đầu tiên - một khi quá trình thực hiện những gì nó đang làm ứng dụng chạy tốt. Nhưng nó có thể mất từ 10 phút (không có giao thông) đến 3-6 giờ (với lưu lượng truy cập) đến trang web - đối với tôi đây không phải là một lựa chọn, nhưng muốn hiểu điều gì đang xảy ra và tại sao nó xảy ra – Spasm