2014-12-22 76 views
2

我实际上正在Django网站上使用django调试工具栏在数字海洋小型dropplet上工作。这一切都与Postgresql,Django,gunicorn和Nginx一起工作。在django上减少用户CPU时间

有什么令我烦恼的是,大概是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) 

所以,我想提高速度,我设置了一个快速数字海洋液滴(最大的一个),以及时间的样子一样。我明白,最大的液滴大多意味着更多的CPU核心,因此,更多的同时请求。

但随后的问题是这两个:

  1. 用户CPU时间什么是相反的系统CPU时间?
  2. 如何缩短用户CPU时间?
+0

所以你正在启用调试?你能扩展那些实际上花费的时间吗? – DRC

+0

嗯,我想,但我不知道如何。我的意思是,该网站正在与geodjango几个请求,但他们只需要140毫秒。 (django-debug-toolbar中的_SQL_选项卡)。我不知道如何找到用户CPU时间花在哪里(我甚至不确定它在服务器端而不是在客户端)但基本上,我的网站在数据库中搜索“艺术事件”之后发生的事情实际的日期时间。然后用AJAX和navigator.geolocation搜索最接近的艺术给用户。 – Spoutnik16

+0

在调试工具栏上点击时间时,它会告诉您在哪里花费时间,同时您应该查找花费在查询中的时间(即使这通常不是问题),并尝试禁用某些应用程序,如django-compressor(在某些案件导致这个问题) – DRC

回答

6

我几乎相同的情况下(在数字海洋,Postgres的,uWSGI ...小液滴),并打破我的头,发现为什么CPU时间〜一个简单的页面上700毫秒和〜3S更复杂如Django调试工具栏上显示的那样。但是后来我发现大部分时间都被调试工具栏本身所使用。当我把它关掉,并把另一个分析器(中间件http://djangosnippets.org/snippets/727/),我看到这些时间下降到约200ms和〜800ms。

所以回答你的问题:

  1. 检查克里斯·普拉特的答案上Django Debug Toolbar: understanding the time panel

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

我从Yugal Jindle的回答轮廓中间件: How to profile django application with respect to execution time?。使用HotShot检查其他分析器选项。