微趣 2011.8.6:Django 性能真是不行

@skysbird:Django性能真是不行。

俞骅 回复@skysbird: 还有个提高性能的方式,就是用pypy代替CPython试试。

skysbird 回复@俞骅:哦。我先用小time的cache搞一下。

俞骅 回复@skysbird: 就是NoSQL,比如django-nonrel,可能会并入将来版本的django中(记得年初的时候在groups上看到过相应的说法)

skysbird 回复@俞骅:non-rel 是啥?

俞骅 回复@skysbird: 没有你那么多字段,开销比较大的貌似20个。300ms的话基本占据主要的开销了啊。别的ORM估计差别不大,不知到non-rel会不会比较适合你的应用。

skysbird 回复@俞骅:你的表大概多大?cols 和 rows在什么规模?我的sql可以确认没什么优化的了,最简的sql了。我是mysql

俞骅 回复@skysbird: 5个300ms左右,为啥我感觉差了1个数量级能... 我的一个页面也是5个q也有cache,不到20ms...(django_server/sqlite)

skysbird 回复@俞骅:queries 我在代码级别已经加入了cache机制,大多数情况基本上在5个以下,time在300ms内,测试机的数据库一般,但同样的查询我用php做过bench,的确要高出不少。unicorn将来我打算给到cpu cores+1的级别上。

俞骅 回复@skysbird: 貌似你的这个view更新不快吧,做cache应该是比较好的选择吧。顺便问一下用django-debug-toolbar看一下页面的queries数看看,是否正常。30workers没必要,一般4个以上差距就不大了,太多反而不好(除非你的server NB)

skysbird 回复@俞骅:代码优化以及配置优化我都进行了很多次的尝试,现在准备做下短timeout的cache。20qps是在nginx+gunicorn(30workers)的情况下跑出来的。的确开了session,你可以看下这个链接,基本上的逻辑和这个差不多,这个链接的qps也不高http://t.cn/a8JtHb

俞骅 回复@skysbird: 不知到你说的优化是指代码还是配置优化。20qps是在什么server下跑出来的测试?如果你的这个view负载很高,是否考虑cache它? 我的经验是只要开了django.contrib.session,request/sec就高不了的。不妨详细介绍一下你的情况,看看可以怎么优化。

skysbird 回复@俞骅:针对django的性能这个问题,我反复试验各种优化方案,现在来看除了把我目前的需求改变,否则就现有的需求来看,我是有些黔驴技穷了。其中一个逻辑比较复杂但也是比较核心功能的页面ab的测试结果在20qps左右,这个的确无法容忍。我几乎尝试过raw sql

俞骅 回复@skysbird: template是不算很快,但应该还没有慢到无法接受的程度。如果很追求渲染速度可以考虑jinja等。ORM的话有很多是开发者的代码问题导致不必要的queries。要用django做数据结构复杂而且性能高的网站势必还要从其他角度优化。'django 性能真实不行' 太武断了。

skysbird 数据库查询不复杂,但是有如下情况:1 model 字段非常多,50个以上。 2django 模板中比较复杂(因为页面本身复杂,涉及到各种查询,排序,filter,类似淘宝产品列表页),同时使用到了很多templatetags,在模板页面中存在多次调用model中的方法. @AmaoZhao 我目前定位在模板性能和ORM性能问题,正在寻求

俞骅http://weibo.com/1392570951
skysbirdhttp://weibo.com/n/skysbird

以上内容可以完整的在这里看到:http://weibo.com/1991968645/xhUm5cShf

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。