Performance Web应用程序的可扩展性和性能,方法?

Performance Web应用程序的可扩展性和性能,方法?,performance,web-applications,web,scalability,Performance,Web Applications,Web,Scalability,您使用了哪些不同的方法和技术来成功解决网站的可伸缩性和性能问题?我是一名ASP.NET web开发人员,正在探索使用带有SQL集群的WCF进行.NET远程处理,我很好奇还有哪些其他方法(例如“云”)。在哪些情况下,您会应用各种方法(例如,对于大约x多个“活动”用户的方法a) 我的意思的一个例子,myspace的一个案例研究:有一个从MS到.NET的端口,现在也有一个这是一个非常广泛的问题,很难回答,但我会尝试提供一些一般性的建议 1-除非你做了一些严重错误的事情,否则你可能不需要担心性能或规模,

您使用了哪些不同的方法和技术来成功解决网站的可伸缩性和性能问题?我是一名ASP.NET web开发人员,正在探索使用带有SQL集群的WCF进行.NET远程处理,我很好奇还有哪些其他方法(例如“云”)。在哪些情况下,您会应用各种方法(例如,对于大约x多个“活动”用户的方法a)


我的意思的一个例子,myspace的一个案例研究:

有一个从MS到.NET的端口,现在也有一个

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

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

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

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

4-如果您的web服务器开始成为性能瓶颈,请使用探查器(如ANTS探查器)来寻找优化web页面代码的方法

5-如果您的web服务器经过了很好的优化,但仍然运行得太热,请寻找更多的缓存机会,但您可能需要简单地添加更多的web服务器

6-如果您的数据库经过了很好的优化,但仍然运行得太热,那么可以考虑添加一个分布式缓存系统。这可能不会发生,直到你一个月的页面浏览量超过1000万次


7-如果您的数据库即使使用分布式缓存也开始变得不堪重负,那么请查看分片体系结构。除非你每月的页面浏览量超过1亿次,否则这种情况可能不会发生。

我在一些网站上工作过,这些网站每月的点击率达到数百万次。以下是一些基本知识:

  • 缓存,缓存,缓存。缓存是减少Web服务器和数据库负载的最简单、最有效的方法之一。缓存页面内容、查询、昂贵的计算,以及任何I/O绑定的内容。Memcache非常简单有效
  • 一旦你用完了,就使用多个服务器。您可以有多个web服务器和多个数据库服务器(带复制)
  • 减少对Web服务器的总体请求。这需要使用expires头缓存JS、CSS和图像。您还可以将静态内容移动到CDN,这将加快用户体验
  • 衡量和基准。在生产机器上运行Nagios,并在dev/qa服务器上进行负载测试。你需要知道你的服务器什么时候会着火,这样你才能防止它
  • 我推荐阅读,它是由一位Flickr工程师写的,是一个很好的参考

    也可以查看我关于可伸缩性的博客文章,其中有许多链接指向有关使用多种语言和平台进行伸缩的演示:

    谢谢。我打算把它写得宽泛一些,因为我正在尝试获得新的想法:)谢谢你的建议,我将不得不核对一下。