我实际上在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)
所以,我想提高速度,我设置了一个快速的数字海洋液滴(最大的一个),时间看起来一样。据我所知,最大的Droplet主要意味着更多的CPU核心,因此更多的同时请求。
但问题是那两个:
答案 0 :(得分:7)
我有几乎相同的场景(Digital Ocean上的小水滴,Postgres,uWSGI ......),并且发现了为什么在一个简单的页面上为什么CPU时间大约是700ms而在更复杂的页面上大约是3s在Django调试工具栏上。但后来我发现调试工具栏本身正在使用大部分时间。当我关闭它并放置另一个探测器(http://djangosnippets.org/snippets/727/上的中间件)时,我看到这些时间下降到~200ms和~800ms。
回答你的问题:
没有减少CPU时间的独特配方。您必须分析您的配置文件输出以发现cpu的使用位置。
我从Yugal Jindle获得了配置文件中间件的答案: How to profile django application with respect to execution time?。使用HotShot检查其他配置文件选项。