flup/fastcgi 无负载情况下的CPU使用情况
我正在通过flup以线程方式运行Django,使用lighttpd来提供服务,并通过套接字进行通信。
在没有负载的情况下,每个fastcgi线程的CPU使用率应该是多少呢?在启动时,每个线程的CPU使用率会在3-4%左右运行一段时间,然后在几个小时内降到大约0.5%。之后就不会再低于这个水平了。
这样的CPU使用率正常吗?我是不是在代码里有bug,导致空闲时循环需要的处理能力比应该的要多?我本来以为在完全空闲的时候,进程的CPU使用率应该是测不出来的。
我在Django上做的事情并不复杂,绝对没有什么需要长时间处理的操作。我知道这并不是很大的负载,但如果这是我引入的bug,我想把它修复掉。
2 个回答
0
如果没有请求需要处理,你的fast-cgi线程就不应该占用任何(明显的)CPU资源。
你应该仔细看看你所描述的负载情况。我用的是相同的架构,我的线程完全处于空闲状态。
2
我在Slicehost(django 1.1,python 2.6)和Dreamhost(django 1.0,python 2.5)上用fastcgi运行django时,观察到了一些情况:
运行top
命令时,可以看到进程启动时CPU使用率很高,大约持续2-3秒,然后几乎立刻降到0。
在启动django应用后,运行ps aux
命令会显示出你描述的情况,不过这其实有点误导。从Ubuntu的ps手册来看:
CPU使用率是以进程整个生命周期内运行的时间百分比来表示的。这并不是理想的方式,也不符合ps的其他标准。CPU使用率不太可能正好加起来到100%。
简单来说,ps
显示的%CPU列其实是进程运行时间的一个平均值。你看到的下降是因为一开始的高峰后面是没有活动的时间,这些时间平均起来就变成了较低的使用率。