我创建了一个非常简单的Django应用程序,它有点产生高CPU负载:使用简单模型列表(其中20个)呈现简单的通用视图,每页5-6个SQL查询生成一个加载的apache进程CPU减少30% - 50%。虽然内存使用率相当不错(30MB),但CPU负载并不适合我的理解,这不是因为apache / wsgi设置或其他原因,当我通过runserver运行应用程序时会发生相同的CPU负载。
因为,我是Django的新手,我想问: 1)这些30-50%的数字对于Django应用程序来说是常见的吗? (Django 1.4,ubuntu 12.04,python 2.7.3) 2)如何分析CPU负载?我在这里使用了一个配置文件中间件:http://djangosnippets.org/snippets/186/但是它只显示了ms数字而不是CPU负载数,并且没有什么特别之处,那么如何识别出这么多CPU功耗呢?
答案 0 :(得分:0)
CPU使用率本身并不能说明应用程序的效率。衡量效果的更重要指标是您的应用可以处理的请求数/秒。机器自带的处理器自然也会对结果产生巨大影响。
我建议您使用多个并发请求运行ab
,并将请求/秒数与一些基准进行比较(网络周围应该有很多)。 ab将尝试测试最大吞吐量,因此其中一个资源将被充分利用(瓶颈)是很自然的,通常这是disk-io。例如,如果您的CPU使用率接近100%,则可能意味着您在某处浪费CPU(reqs / second为低)或者您已经优化了disk-io(reqs / s high)。
答案 1 :(得分:0)
查看%CPU列并不十分准确。我当然总是看到50%-100%CPU的峰值..它并不表示cpu的使用时间,只是我们在特定时刻达到了该值。这些将分为最小/最大数字,而不是平均CPU使用率。
另一个重要的部分:假设你有4个核心,这意味着top
上30-50%的数字超出最大值400%。 50%在一个核心上,50%在一个核心上,等等。
您可以按顶部的1来查看各个核心CPU数据。