2009-04-17 46 views
6

我有一個python進程(Pylons webapp),不斷使用10-30%的CPU。我會改進/調整日誌記錄以瞭解正在發生的事情,但在那之前,是否有任何工具/技術可以查看python進程在做什麼,線程有多少以及如何繁忙等等。調查蟒蛇進程,看看有什麼吃CPU

更新:

  • 配置的訪問日誌,這表明沒有正在進行的請求,的webapp只是空轉
  • 沒有任何意義了中間件鏈paste.profile堵塞,因爲沒有請求,活動必須發生在webapp的工作者線程或paster web服務器
  • 運行貼紙,如下所示:「python -m cProfile -o outfile/usr/bin/paster serve dev.ini」並檢查結果顯示大部分時間已用完在「posix.waitpid」中。帕斯特運行Web應用程序中的子,子活動不是由分析器
  • 尋找到回升;黑客PasteScript「服務」命令,這樣子進程會得到異形

另一個更新:

很多修修補補之後,在各個地方粘貼分析器並熟悉PasteScript內部,我發現如果應用程序啓動時沒有「--reload」參數(此標誌告訴paster自動重啓,如果代碼更改,便於開發),則CPU負載會消失,這在生產環境中很好。

+1

什麼操作系統? – mavnn 2009-04-17 11:19:38

回答

7

Profiling可能會幫助你瞭解它在做什麼。如果按「時間」對輸出進行排序,您將看到哪些函數正在調整CPU時間,這應該會給你一些好的提示。

6

正如您所述,在--reload模式下,粘貼每秒掃描文件系統以查看是否有任何加載的文件已更改。如果他們有,然後粘貼重新加載過程。如果需要,您還可以手動指示粘貼來監視非Python代碼模塊的更改。

您可以使用--reload-interval選項更改重新裝入間隔,這將減少使用--reload時的CPU使用率,因爲它會頻繁地掃描。