1

私たちのレールプロダクションサーバーがハングアップしている場所を見つける方法を誰か考えてくれませんか? その CPU は 99% であるため、while/for/each ループで失われると思います。残念ながら候補ループが見つかりません。

この問題は開発段階では発生せず、テスト スイートのコード カバレッジは 100% になりました。

すでに gdb 経由で Ruby に接続していましたが、そこからどこへ行くべきかわかりませんでした。何か案は?

4

2 に答える 2

10

ビジー ループ プロセスに gdb をアタッチしたら、gdb から呼び出しrb_backtraceます。

> call rb_backtrace()

からの出力rb_backtraceはクラッシュ レポートに似ており、標準の Ruby エラー バックトレースと同様にログ ファイルに出力されます。

そこから、Ruby コードのどこでプロセスがスタックしているかがわかるので、ソリューションに一歩近づいていることを願っています。

ここでいくつかのヒントを確認できます:
http://isotope11.com/blog/getting-a-ruby-backtrace-from-gnu-debugger

于 2013-02-09T12:59:10.380 に答える
1

これはクリーンな解決策ではありませんが、少なくとも次の方法で問題を解決しました。「シン」ウェブサーバーに移行し、「デバイス」を削除しました。

于 2013-02-20T14:18:32.257 に答える