背景
我有一个 Django 应用程序,它在低负载下工作和响应非常好,但在像 100 个用户/秒这样的高负载下,它消耗 100% 的 CPU,然后由于缺乏 CPU 速度变慢。
问题:
- 分析应用程序给了我函数所花费的时间。
- 该时间在高负载时增加。
- 消耗的时间可能是由于复杂的计算或等待 CPU。
那么,如何找到一段代码消耗的 CPU 周期呢?
由于减少CPU消耗会增加响应时间。
- 我可能编写了非常高效的代码并且需要增加更多的 CPU 能力
或者
- 我可能有一些愚蠢的代码占用 CPU 并导致速度变慢?
更新
- 我正在使用 Jmeter 来分析我的 Web 应用程序,它为我提供了 2 个请求/秒的吞吐量。[ 100 个用户]
- 100 个请求的平均时间为 36 秒,而 1 个请求的平均时间为 1.25 秒。
更多信息
- 配置 Nginx + Uwsgi 与 4 个工作人员
- 未使用数据库,使用来自 REST API 的响应
- 在第一次命中时,REST API 的响应被缓存,因此没有什么区别。
- 用于json
ujson
解析。
很想知道:
- Python-Django 被如此多的组织用于如此多的大型站点,那么必须有一些高端的 Debug / Memory-CPU 分析工具。
- 我发现的所有这些都是执行分析的随意代码片段。