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

问题描述 投票:0回答:3

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

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

performance web-applications scalability
3个回答
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 亿次时,这可能不会发生。


8
投票

我曾在一些每月点击量数百万次的网站上工作过。以下是一些基础知识:

  1. 缓存,缓存,缓存。缓存是减少网络服务器和数据库负载的最简单、最有效的方法之一。缓存页面内容、查询、昂贵的计算以及 I/O 绑定的任何内容。 Memcache 非常简单且有效。
  2. 一旦达到极限,请使用多个服务器。您可以拥有多个 Web 服务器和多个数据库服务器(带复制)。
  3. 减少对网络服务器的总体请求数。这需要使用过期标头缓存 JS、CSS 和图像。您还可以将静态内容移动到 CDN,这将加快您的用户体验。
  4. 测量和基准。在生产机器上运行 Nagios,并在开发/质量保证服务器上进行负载测试。您需要知道您的服务器何时会着火,以便您可以预防它。

我建议阅读构建可扩展的网站,它是由一位 Flickr 工程师编写的,是一个很好的参考。

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


1
投票

MS 有 velocity 以及 MEMCache 现在有一个到 .NET 的端口,还有 indeXus.Net

© www.soinside.com 2019 - 2024. All rights reserved.