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 に指示します。これは本番環境では問題ありません。