Web应用程序的可伸缩性和性能,方法?

cco*_*ook 5 performance scalability web-applications web

您使用了哪些方法和技术来成功解决网站的可扩展性和性能问题?我是一个ASP.NET Web开发人员,使用带有SQL集群的WCF探索.NET远程处理,并且对于存在哪些其他方法(例如"云")感到好奇.在哪些情况下,您会应用各种方法(例如,大约x个"活跃"用户的方法a).

我的意思的一个例子,一个myspace案例研究:http://highscalability.com/myspace-architecture

jwa*_*gel 15

这是一个非常广泛的问题,很难回答,但我会尝试提供一些一般性的建议.

1 - 除非你做了一些严重错误的事情,否则你可能不需要担心性能或规模,直到你达到大量的流量(每月超过100万的页面浏览量).

2 - 您最大的性能问题最初可能是来自其他国家/地区的页面加载时间.尝试使用Gomez实例站点测试来查看来自世界各地的页面加载时间,并使用YSlow作为优化指南.

3 - 当您开始遇到性能问题时,首先很可能是由于数据库工作.使用SQL Server Profiler检查SQL流量,查找长时间运行的查询以尝试优化,还可以使用dm_db_missing_index_details查找应添加的索引.

4 - 如果您的Web服务器开始成为性能瓶颈,请使用分析器(例如ANTS Profiler)来寻找优化网页代码的方法.

5 - 如果您的Web服务器经过优化并且仍然运行得太热,请寻找更多缓存机会,但您可能只需要添加更多Web服务器.

6 - 如果您的数据库经过了很好的优化并且仍然运行得太热,那么请查看添加分布式缓存系统.这可能不会发生,直到你每月超过1000万的页面浏览量.

7 - 如果您的数据库即使使用分布式缓存也开始变得不堪重负,那么请查看分片架构.这可能不会发生,直到你每月超过1亿页面浏览量.


Rya*_*rty 8

我曾在几个网站上工作,每月可获得数百万次点击率.以下是一些基础知识:

  1. 缓存,缓存,缓存.缓存是减少Web服务器和数据库负载的最简单,最有效的方法之一.缓存页面内容,查询,昂贵的计算,I/O绑定的任何内容.Memcache简单而有效.
  2. 一旦最大化,请使用多个服务器.您可以拥有多个Web服务器和多个数据库服务器(具有复制功能).
  3. 减少对Web服务器的整体请求数.这需要使用expires头缓存JS,CSS和图像.您还可以将静态内容移动到CDN,这将加快用户的体验.
  4. 衡量和基准.在生产计算机上运行Nagios并在dev/qa服务器上加载测试.你需要知道什么时候你的服务器会着火,所以你可以防止它.

我建议阅读Building Scalable Websites,它是由Flickr工程师之一编写的,是一个很好的参考.

查看我关于可扩展性的博客文章,它有很多关于使用多种语言和平台进行扩展的演示文稿的链接:http: //www.ryandoherty.net/2008/07/13/unicorns-and-scalability/