分析长期运行的Python服务器

Wil*_*ill 9 python performance profiling

我有一个长期运行的扭曲服务器.

在大型系统的测试,在一个特定点数分钟到测试,当一些客户进入特定国家和特定的外部事件发生,那么这台服务器需要100%的CPU的几分钟,做的工作非常缓慢.我想知道它在做什么.

如何在长时间运行的服务器中获取特定时间段的配置文件?

如果有办法在运行时启用或注入探查器,我可以轻松地通过HTTP发送服务器启动和停止消息?

鉴于选择,我希望基于堆栈 /调用图分析,但即使叶采样也可能提供洞察力.

Mik*_*bov 11

yappi profiler可以在运行时启动和停止.

  • 现在它是[这里](https://bitbucket.org/sumerc/yappi/),一个简短的使用示例是[这里](https://github.com/mottosso/yappi),它也可以从命令类似于“python3 -m yappi -o myprofile.cprof script.py” (2认同)

ana*_*cat 5

出现了两个有趣的工具来尝试解决该特定问题,您可能不必提前在代码中进行分析,但希望在紧要关头对生产代码进行分析。

  • pyflame将使用ptrace(2)系统调用附加到现有进程并创建进程的“火焰图”。它是用 Python 编写的。

  • py-spy 的工作原理是读取进程内存并找出 Python 调用堆栈。它还提供了一个火焰图和一个“类似顶部”的界面来显示哪个函数花费的时间最多。它是用 Rust 和 Python 编写的。