如何在实时Django服务器上进行性能分析?

6 投票
3 回答
2757 浏览
提问于 2025-04-17 06:45

我之前从来没有在Python中做过代码覆盖率的检测,但我想找一个类似于GCCgcov的工具,它可以告诉我每一行代码执行了多少次,或者像苹果的Shark那样,能分层显示每个函数花了多长时间。

我现在面临的问题是,我有一个正在运行的服务器,负载很高,但我从日志中看不出是什么原因。我想在我的Django实例上加一个监控工具,看看哪些代码行被执行得最多,或者哪些函数耗时最长。

这有点像代码覆盖率,但又不完全一样。我希望能在一个正在运行的服务器上引入这个监控工具,最好是不要做太多修改。

有没有好的建议?

3 个回答

1

我使用这种方法:一个监控线程每0.3秒就把堆栈跟踪信息写入日志文件。经过几个小时后,我可以看到解释器花了最多时间的地方。这并不会让我的服务器变慢:

Python服务器的实时性能分析

3

Django-live-profiler 是一个可以直接使用的 Django 应用,它可以帮助你分析正在运行的应用程序,使用的是 statprof 工具,并且可以把分析结果可视化展示出来。

撰写回答