6

CPU の 10 ~ 30% を常に使用している Python プロセス (Pylons webapp) があります。ロギングを改善/調整して、何が起こっているかについての洞察を得ますが、それまでは、pythonプロセスが何をしているのか、スレッドの数とビジー状態などを確認できるツール/テクニックはありますか?

アップデート:

  • 進行中のリクエストがなく、webapp がアイドル状態であることを示す構成済みのアクセス ログ
  • リクエストがないため、ミドルウェアチェーンにpaste.profileをプラグインする意味はありません。アクティビティは、webappのワーカースレッドまたはpaster Webサーバーで発生している必要があります
  • 「python -m cProfile -o outfile /usr/bin/paster serve dev.ini」のように paster を実行し、結果を調べると、ほとんどの時間が「posix.waitpid」に費やされていることがわかります。Paster はサブプロセスで webapp を実行しますが、サブプロセスのアクティビティはプロファイラーによって取得されません
  • サブプロセスがプロファイリングされるように、PasteScriptの「serve」コマンドをハッキングする

別の更新:

様々な場所でプロファイラーを貼り付け、PasteScript の内部に慣れ、多くの調整を行った後、「--reload」パラメーターなしでアプリケーションを起動すると、一定の CPU 負荷がなくなることを発見しました (このフラグは、コードが変更された場合に自動的に再起動するように paster に指示します。これは本番環境では問題ありません。

4

2 に答える 2

7

プロファイリングは、それが何をしているかを少し知るのに役立つかもしれません。出力を「時間」で並べ替えると、どの関数が CPU 時間を消費しているかがわかります。これにより、いくつかのヒントが得られるはずです。

于 2009-04-17T11:22:27.543 に答える