2009-04-17 45 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使用率,因为它会频繁地扫描。