2011-06-29 13 views
2

私たちはいくつかのバックエンドWebサービスと統合されたcherrypyサービスを持っています。ロードテスト中、cherrypyプロセスはしばらくすると定期的にクラッシュします(45分)。ボトルネックは、使用しているバックエンドWebサービスであることがわかっています。クラッシュする前に、バックエンドサービスにアクセスすると500と503のエラーが発生しますが、なぜcherrypy自体がクラッシュするのか理解できません(プロセス全体が終了しました)。問題がどこにあるかを調査する方法を私に教えてもらえますか? thread_poll(50)があまりにも多くのリクエストをキューに入れている可能性はありますか?チェリーピークラッシュの調査方法は?

+0

CherryPyはクラッシュすると例外をスローしますか? どこでもマルチプロセッシングを使用していますか? –

答えて

0

私の初期のチェリーピーの時代に、私は一度クラッシュしました。私は、segfaultによって引き起こされるPythonプロセスのクラッシュを意味します。私が調査したところ、私はMySQLdb接続を混乱させ、CherryPyスレッドが相互にアクセスできるオブジェクトにキャッシュすることを発見しました。 MySQLdb接続はスレッドセーフではないため、作成されたスレッドからのみアクセスする必要があります。同時実行性が原因でクラッシュが非決定的に見え、ロードテストでのみ発生します。ロードテストはここでデバッグツールとして動作します。Apache JMeterまたはLocust(Pythonic)を試してみてください。

プロセスがクラッシュすると、スタックトレースを持つコアダンプを書き込むようにLinuxに指示することができます(たとえば、私の例ではMySQLdbのCコード側)。しかし、エイリアンの低レベルのC環境はあなた(それは私にとって)であり、スタックトレースは、クラッシュの原因となっているライブラリを見つけ出したり、少なくとも疑わしいサークルを絞り込んだりするのに役立ちます。ここにはan article about itがあります。

また、CherryPyにはほとんど問題がないことにご注意ください。それは実際には非常に安定しています。

関連する問題