调查python进程,看看有什么吃CPU

时间:2009-04-17 11:17:34

标签: python multithreading debugging monitoring pylons

我有一个python进程(Pylons webapp),它不断使用10-30%的CPU。我将改进/调整日志记录以获得对正在发生的事情的一些了解,但在那之前,是否有任何工具/技术可以让我们看到python进程正在做什么,有多少以及它有多忙线程等?

更新

  • 配置了访问日志,显示没有请求,webapp只是空闲
  • 没有必要在中间件链中插入paste.profile,因为没有请求,必须在webapp的工作线程或贴纸Web服务器中发生活动
  • 像这样运行paster:“python -m cProfile -o outfile / usr / bin / paster serve dev.ini”并且检查结果显示大部分时间花在“posix.waitpid”上。 Paster在子进程中运行webapp,分析器
  • 没有选择子进程活动
  • 调查;黑客使用PasteScript“serve”命令,以便子进程可以进行分析

另一次更新:

经过多次修改,在各个地方坚持分析器并熟悉PasteScript内部,我发现如果应用程序启动时没有“--reload”参数,则常量CPU负载会消失(如果代码更改,此标志会告诉paster重新启动自身,生产环境很好。

2 个答案:

答案 0 :(得分:7)

Profiling可能会帮助您了解它正在做的事情。如果您按“时间”对输出进行排序,您将看到哪些函数正在增加cpu时间,这应该会给您一些很好的提示。

答案 1 :(得分:6)

正如您所指出的,在--reload模式下,Paste会每秒扫描文件系统,以查看是否已加载任何已加载的文件。如果有,则粘贴重新加载该过程。如果需要,您也可以手动告诉Paste监视非Python代码模块的更改。

您可以使用--reload-interval选项更改重新加载时间间隔,这将减少使用--reload时的CPU使用率,因为它会减少扫描次数。