对于高流量的ajax密集型网站,您会推荐什么?

时间:2008-10-15 13:57:23

标签: php python lighttpd cherrypy high-load

对于像reddit这样的网站,有很多上/下投票,每个主题都有很多评论,我该怎么办?

Lighttpd / Php或Lighttpd / CherryPy / Genshi / SQLAlchemy?

对于数据库来说,什么会扩展得更好/最快的MySQL(4.1或5?)或PostgreSQL?

5 个答案:

答案 0 :(得分:8)

我无法谈论MySQL / PostgreSQL问题,因为我对Postgres的经验有限,但我的硕士研究项目是关于使用CherryPy的高性能网站,如果你使用我不认为你会感到失望CherryPy为您的网站。它可以轻松扩展到商用硬件上的数千个并发用户。

当然,对于PHP来说也是如此,我不知道比较PHP和CherryPy性能的任何合理基准。但是如果你想知道CherryPy是否可以处理每秒大量请求的高流量站点,答案肯定是肯定的。

答案 1 :(得分:8)

理想的设置将接近this

caching

简而言之,nginx是一个快速轻便的网络服务器/前端代理,它有一个独特的模块,可以直接从memcached的RAM存储中获取数据,而无需点击磁盘或任何动态Web应用程序。当然,如果请求的URL尚未缓存(或者它已过期),则请求照常进入webapp。天才部分是当webapp生成响应时,它的副本将转到memcached,准备重用。

所有这些不仅适用于网页,还适用于AJAX查询/响应。

在文章中'back'服务器是http,具体谈论mongrel。如果后面是FastCGI和其他(更快的?)框架会更好;但它的关键性要低得多,因为nginx / memcached团队吸收了最大的负载。

请注意,如果您的AJAX流量的网址方案设计得很好(REST最好,恕我直言),您可以将大部分数据库放在memcached中,任何POST(将传递给应用程序)都可以抢先更新高速缓存中。

答案 2 :(得分:3)

在DB问题上,我会说PostgreSQL比MySQL更好地扩展并且具有更好的数据完整性。对于小型站点,MySQL可能会更快,但据我所知,随着数据库大小的增长,它会显着减慢。 (注意:我从来没有将MySQL用于大型数据库,所以你应该对它的可扩展性有所了解。)但是PostgreSQL肯定能很好地扩展,并且对于高流量来说是个不错的选择站点。

答案 3 :(得分:2)

需要更多数据。杰夫有几篇关于同样问题的文章,答案是等到你遇到性能问题。

首先 - 谁正在托管,他们有什么?你的内部天赋技能是什么?你打算雇佣一家外部公司吗?他们推荐什么?一个愿意学习新框架的团队的全新项目?

第二件事是做一些模型 - 接口如何工作。它需要加载和保存哪些数据?我们的想法是保持网络和数据库端之间的流量。例如没有包含大量查询的繁琐页面。等

一旦您对数据要求和流程有了更好的了解 - 然后就数据库设计进行工作。有很多规则要遵循,但其中一个更好的规则是遵循规范化规则(是的,我是一个数据库人为什么?)

现在你有几个页面构建 - 运行你的测试。你有问题吗?是的,现在看看它是什么。页面服务或db拉?然后衡量一个行动方案。

答案 4 :(得分:2)

我会选择nginx + php + xcache + postgresql