4

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

困扰我的是渲染时间约为 2.5 秒,其中大部分是关于User CPU time

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)

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

但是问题是这两个:

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

1 回答 1

10

我有几乎相同的场景(Digital Ocean、Postgres、uWSGI 上的小水滴……),然后我想知道为什么 CPU 时间在简单页面上约为 700 毫秒,而在更复杂的页面上约为 3 秒,如 Django Debug 所示工具栏。但后来我发现调试工具栏本身使用了大部分时间。当我关闭它并放置另一个分析器(http://djangosnippets.org/snippets/727/上的中间件)时,我看到这些时间下降到 ~ 200 毫秒和 ~ 800 毫秒。

所以回答你的问题:

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

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

我从 Yugal Jindle 的回答中得到了配置文件中间件: 如何根据执行时间分析 django 应用程序?. 使用 HotShot 检查其他分析器选项。

于 2015-06-28T09:44:39.230 回答