协慌网

登录 贡献 社区

Django 会扩展吗?

我正在使用 Django 构建一个 Web 应用程序。我选择 Django 的原因是:

  • 我想使用免费 / 开源工具。
  • 我喜欢 Python 并认为它是一种长期语言,而对于 Ruby 我不确定,PHP 似乎是一个很难学的麻烦。
  • 我正在构建一个想法的原型,并没有过多考虑未来。开发速度是主要因素,我已经了解 Python。
  • 我知道如果我将来选择迁移到 Google App Engine 会更容易。
  • 我听说 Django“很好”。

现在我正在考虑发表我的作品,我开始关注规模。我发现关于 Django 扩展功能的唯一信息是由 Django 团队提供的(我没有说什么可以忽略它们,但这显然不是客观信息......)。

我的问题:

  • 今天建立在 Django 上的 “最大” 网站是什么? (我主要通过用户流量测量大小)
  • Django 可以每天处理100,000 个用户 ,每个用户访问该网站几个小时吗?
  • 像 Stack Overflow 这样的网站可以在 Django 上运行吗?

答案

  1. “今天在 Django 上建立的最大的网站是什么?”

    没有任何一个地方可以收集有关 Django 建站点上的流量的信息,因此我将不得不使用来自不同位置的数据进行搜索。首先,我们在主 Django 项目页面的首页上有一个 Django 站点列表,然后是djangosites.org 上的 Django 站点列表。通过列表并选择一些我知道的流量,我们看到:

  2. “Django 每天可以处理 100,000 个用户,每个用户访问该网站几个小时吗?”

    是的,见上文。

  3. “Stack Overflow 这样的网站可以在 Django 上运行吗?”

    我的直觉是肯定的,但正如其他人的回答和 Mike Malone 在他的演讲中提到的那样,数据库设计至关重要。如果我们能找到任何可靠的流量统计数据,也可以在 www.cnprog.com 上找到强有力的证据。无论如何,它不只是通过抛出一堆 Django 模型而发生的事情:)

当然,有更多的网站和博主感兴趣,但我必须停在某个地方!


博客文章关于使用 Django 建立高流量网站 michaelmoore.com描述为一个前 10,000 名的网站Quantcast 统计数据compet.com 统计数据


(*)编辑的作者,包括这样的参考,曾经在该项目中担任外包开发人员。

我们现在正在进行负载测试。我们认为我们可以支持 240 个并发请求(持续速率为每秒 120 次点击 24x7),服务器性能没有任何显着降低。那将是每小时 432,000 次点击。响应时间不小(我们的事务很大)但随着负载的增加,我们的基准性能没有下降。

我们正在使用 Apache 前端 Django 和 MySQL。操作系统是红帽企业 Linux(RHEL)。 64 位。我们在 Django 的守护进程模式下使用 mod_wsgi。除了接受默认值之外,我们没有进行缓存或数据库优化。

我们都在 64 位戴尔的一个虚拟机中(我认为)32Gb RAM。

由于 20 或 200 个并发用户的性能几乎相同,因此我们不需要花费大量时间来 “调整”。相反,我们只需要通过普通的 SSL 性能改进,普通的数据库设计和实现(索引等),普通的防火墙性能改进等来保持我们的基本性能。

我们测量的是我们的负载测试笔记本电脑在运行 16 个并发请求线程的 15 个进程的疯狂工作负载下挣扎。

不确定每日访问次数,但这里有一些大型 Django 网站的例子:

这是Quora高流量 Django 站点列表的链接。