我有一个不断使用 10-30% CPU 的 python 进程(Pylons webapp)。我将改进/调整日志记录以了解正在发生的事情,但在此之前,是否有任何工具/技术可以查看 python 进程正在做什么、它有多少线程和有多忙等?
更新:
- 配置的访问日志显示没有请求正在进行,webapp 只是空闲
- 没有必要在中间件链中插入 paste.profile,因为没有请求,活动必须在 webapp 的工作线程或粘贴 web 服务器中发生
- 像这样运行 paste: "python -m cProfile -o outfile /usr/bin/paster serve dev.ini" 并检查结果表明大部分时间都花在了 "posix.waitpid" 上。Paster在子流程中运行webapp,探查器未拾取子流程活动
- 调查 ;hacking PasteScript "serve" 命令,以便对子进程进行分析
另一个更新:
经过多次修改,在各个地方粘贴分析器并熟悉 PasteScript 内部,我发现如果应用程序在没有“--reload”参数的情况下启动,持续的 CPU 负载就会消失(这个标志告诉 paster 如果代码发生变化,则重新启动,很方便开发),这在生产环境中很好。