代码之家  ›  专栏  ›  技术社区  ›  Pēteris Caune

研究python进程以了解什么在侵蚀CPU

  •  6
  • Pēteris Caune  · 技术社区  · 16 年前

    我有一个python进程(pylons webapp),它一直使用10-30%的CPU。我将改进/优化日志记录,以了解正在发生的事情,但在此之前,是否有任何工具/技术允许查看Python进程正在做什么、它有多少线程以及有多忙等?

    更新:

    • 配置的访问日志显示没有请求正在进行,webapp只是处于空闲状态
    • 在中间件链中没有插入paste.profile的点,因为没有请求,所以必须在webapp的工作线程或paster web服务器中进行活动。
    • 像这样运行paster:“python-m cprofile-o outfile/usr/bin/paster serve dev.ini”,检查结果显示大部分时间都花在“posix.waitpid”上。Paster在子进程中运行webapp,探查器未拾取子进程活动
    • 研究;对pastescript“serve”命令进行黑客攻击,以便对子流程进行分析

    另一个更新:

    经过大量的修改,将profiler贴在不同的地方,熟悉pastescript的内部,我发现如果在没有“-reload”参数的情况下启动应用程序,那么恒定的CPU负载就会消失(这个标志告诉paster,如果代码发生变化,就可以重新启动自己,这在生产环境中很好。

    2 回复  |  直到 16 年前
        1
  •  7
  •   moinudin    16 年前

    Profiling 可能会帮助你了解它在做什么。如果按“时间”对输出进行排序,您将看到哪些函数占用了CPU时间,这将给您一些很好的提示。

        2
  •  6
  •   Ben Bangert    16 年前

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

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