我已经创建了一个相当简单的Django应用程序,它在某种程度上会产生很高的CPU负载:呈现一个带有简单模型列表(20个)的简单通用视图,每页5-6个SQL查询会产生一个apache进程,它会使CPU负载达到30% - 50%。虽然内存使用相当正常(30MB),但据我所知,CPU负载并不正常,这不是因为apache/wsgi设置或其他原因,当我通过runserver运行应用程序时,同样的CPU负载也会发生。
因为我是Django的新手,所以我想问: 1)对于Django应用程序来说,这30-50%的数字是不是很常见?(Django 1.4,ubuntu 12.04,python 2.7.3) 2)如何分析CPU负载?我在这里使用了一个配置文件中间件:http://djangosnippets.org/snippets/186/,但它只显示ms数字,而不显示CPU负载数字,也没有什么特别之处,那么我如何识别是什么消耗了如此多的CPU能力呢?
发布于 2012-05-30 06:09:19
CPU使用率本身并不能说明你的应用程序的效率。衡量性能的更重要的指标是你的应用程序每秒可以处理多少请求。你的机器的处理器类型自然也会对结果产生巨大的影响。
我建议你在多个并发请求的情况下运行ab,并将每秒的请求数与一些基准测试结果进行比较(网络上应该有很多)。ab将尝试测试最大吞吐量,因此自然会充分利用其中一个资源(瓶颈),通常是disk-io。举个例子,如果你碰巧CPU使用率接近100%,这可能意味着你在某个地方浪费了CPU (reqs/s是低的),或者你已经很好地优化了disk-io (reqs/s高)。
发布于 2012-05-30 08:06:05
查看%CPU列不是很准确。我确实经常看到CPU达到50%-100%的峰值。它并不表示cpu被使用了多长时间,只是表示我们在该特定时刻达到了该值。这些值属于最小/最大值,而不是您的平均cpu使用率。
另一个重要的部分:假设你像我一样有4个核心,这意味着top上的30-50%的数字是最大的400%。顶部50%意味着一个核心的50%,所有四个核心的12.5%,以此类推。
您可以在顶部按1来查看各个核心cpu的数字。
https://stackoverflow.com/questions/10805481
复制相似问题