Django是否超过每日10万次访问?
我正在用Django构建一个网页应用。选择Django的原因有:
- 我想使用免费的开源工具。
- 我喜欢Python,觉得它是一个长期使用的语言,而Ruby我不太确定,PHP学习起来感觉很麻烦。
- 我在为一个想法做原型,没考虑太多未来的事情。开发速度是我最看重的,而且我已经会Python了。
- 如果将来我想迁移到Google App Engine,我知道这样做会更简单。
- 我听说Django“很好用”。
现在我快要考虑发布我的作品了,开始担心扩展性的问题。我找到的关于Django扩展能力的信息,都是Django团队提供的(我不是说他们的信息不可信,但这显然不是客观的评价……)。
有没有独立的开发团队报告说,他们搭建的Django网站能稳定处理每天超过10万的访问量?
29 个回答
我不太确定每天有多少人访问这些网站,但这里有一些使用Django框架的大型网站的例子:
- disqus.com (来自djangocon的讲座)
- bitbucket.org (相关介绍)
- lanyrd.com (来源)
- support.mozilla.com (源代码)
- addons.mozilla.org (源代码) (来自djangocon的讲座)
- theonion.com (相关介绍)
- guardian.co.uk 的评论系统使用了Django (来源)
- rdio
这里有一个链接,列出了高流量的Django网站。
我们现在正在进行负载测试。我们认为可以支持240个同时请求(每秒稳定120次请求,全天候24小时),而不会对服务器性能造成明显影响。这意味着每小时可以处理432,000次请求。虽然响应时间不算快(我们的交易量很大),但随着负载增加,我们的性能没有下降。
我们使用Apache作为前端,后面是Django和MySQL。操作系统是红帽企业版Linux(RHEL),是64位的。我们在Django中使用mod_wsgi的守护进程模式。除了接受默认设置外,我们没有进行任何缓存或数据库优化。
我们所有的东西都在一台64位的戴尔虚拟机上,内存大概是32GB。
由于20个用户和200个用户的性能几乎一样,所以我们不需要花费大量时间去“调整”系统。我们只需要通过一些普通的SSL性能提升、合理的数据库设计和实现(比如索引等)、普通的防火墙性能提升等来保持我们的基础性能。
我们测量的是我们的负载测试笔记本在处理15个进程同时运行16个请求线程时的艰难表现。
"现在有哪些大型网站是用Django搭建的?"
目前没有一个地方能集中收集所有用Django搭建的网站的流量信息,所以我只能根据不同地方的数据来猜测一下。首先,我们可以在Django的官方网站上找到一些Django网站的列表,还有在djangosites.org上的Django网站列表。通过这些列表,我挑选了一些我知道流量不错的网站:
Pinterest: Alexa排名第37(2015年4月21日),2013年有7000万用户
tabblo.com: 每天4.4万次访问,可以参考Ned Batchelder的文章现代网站的基础设施.
pownce.com(现已停止运营): Alexa排名大约65k. Pownce的Mike Malone在他的EuroDjangoCon演讲中提到扩展Django网页应用时说“每秒数百次访问”。这是一个关于如何扩展Django的很好的演讲,提到了一些Django扩展性方面的不足。
惠普有一个用Django 1.5搭建的网站:ePrint中心。不过截至2015年11月,整个网站已经迁移,这个链接只是一个重定向。这个网站是一个全球服务,提供Instant Ink和惠普相关服务的订阅服务(*).
"Django能处理每天10万用户,每个用户访问几个小时吗?"
可以,见上文。
"像Stack Overflow这样的网站可以用Django运行吗?"
我觉得可以,但正如其他人所说的,Mike Malone在他的演讲中提到,数据库设计非常关键。如果我们能找到www.cnprog.com的可靠流量统计数据,那可能会有更强的证明。总之,这可不是随便把一堆Django模型拼凑在一起就能实现的事情 :)
当然,还有很多其他有趣的网站和博主,但我得在这里停下来了!
关于使用Django搭建高流量网站michaelmoore.com的博客文章,描述它是前10,000名网站之一。Quantcast统计和compete.com统计.
(*) 编辑者曾在该项目中担任外包开发者。