减少django上的用户CPU时间

Spo*_*k16 3 django performance nginx django-debug-toolbar

我实际上是在一个Django网站上工作,使用django调试工具栏,在数字海洋小dropplet.这一切都适用于Postgresql,Django,gunicorn和Nginx.

让我烦恼的是,渲染时间约为2.5秒,而且大部分时间都用户CPU时间有关.

Resource         Value
User CPU time    2271.395 msec
System CPU time  86.142 msec
Total CPU time   2357.537 msec
Elapsed time     2483.655 msec
Context switches 8 voluntary, 469 involuntary

Browser Chronology
domainLookup 0 (+0)
connect 0 (+0)
request 3 (+-1419272753107)
response 5653 (+-1419272758757)
domLoading 5669 (+-1419272758773)
domInteractive -1419272753104
domContentLoadedEvent -1419272753104 (+0)
loadEvent -1419272753104 (+0)
Run Code Online (Sandbox Code Playgroud)

所以,我想提高速度,我设置了一个快速的数字海洋液滴(最大的一个),时间看起来一样.据我所知,最大的Droplet主要意味着更多的CPU核心,因此,更多的同时请求.

但问题是那两个:

  1. 用户CPU时间与系统CPU时间相反的是什么?
  2. 如何减少用户CPU时间?

Ric*_*lva 8

我有几乎相同的场景(数字海洋上的小水滴,Postgres,uWSGI ......),然后突破我的脑袋,发现为什么CPU时间在一个简单的页面上约为700毫秒,在更复杂的页面上约为3秒,如Django Debug所示工具栏.但后来我发现调试工具栏本身正在使用大部分时间.当我关闭它并放置另一个探测器(http://djangosnippets.org/snippets/727/上的中间件)时,我看到这些时间下降到~200ms和~800ms.

所以回答你的问题:

  1. 检查Chris Pratt关于Django调试工具栏的答案:了解时间面板

  2. 没有唯一的配方可以减少CPU时间.您必须分析您的配置文件输出以发现cpu的使用位置.

我从Yugal Jindle的答案得到了配置文件中间件: 如何在执行时间方面描述django应用程序?.使用HotShot检查其他配置文件选项.