我有一个长期运行的twisted服务器。
在大型系统测试中,在测试几分钟的某个特定点,当某些客户端进入特定状态并发生特定的外部事件时,然后此服务器需要几分钟的100%CPU并且它的工作非常缓慢。我想知道它在做什么。
如何在长时间运行的服务器中获取特定时间段的配置文件?
如果有办法在运行时启用或注入探查器,我可以轻松地通过HTTP发送服务器启动和停止消息吗?
考虑到这一选择,我希望stack-based /调用图分析,但即使是叶片采样也可能提供见解。
答案 0 :(得分:11)
yappi profiler可以在运行时启动和停止。
答案 1 :(得分:3)
不是一个非常Pythonic的答案,但也许strace
这个过程提供了一些见解(假设您使用的是Linux或类似的)。
严格地使用Python,对于这样的事情,我正在使用跟踪所有调用,将结果存储在一个环形缓冲区中并使用一个信号(也许你可以通过HTTP消息这样做)来转储该环形缓冲区。当然,跟踪会降低所有内容的速度,但在您的方案中,您也可以通过HTTP消息切换跟踪,因此只有在您的问题处于活动状态时才会启用跟踪。
答案 2 :(得分:2)
Pyliveupdate是用于以下目的的工具:对长时间运行的程序进行概要分析,而无需重新启动它们。它允许您动态选择特定的功能来进行性能分析或停止性能分析,而无需提前对代码进行检测-它可以动态地对代码进行性能分析。
Pyliveupdate具有三个关键功能:
在此处查看演示:https://asciinema.org/a/304465。
答案 3 :(得分:1)