【问题标题】:Scalability and Performance of Web Applications, Approaches?Web 应用程序的可扩展性和性能,方法?
【发布时间】:2010-09-30 19:46:48
【问题描述】:

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

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

【问题讨论】:

    标签: performance web-applications web scalability


    【解决方案1】:

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

    1 - 除非您做一些严重错误的事情,否则您可能无需担心性能或规模,直到您获得大量流量(每月页面浏览量超过 100 万次)。

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

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

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

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

    6 - 如果您的数据库优化得很好并且仍然运行太热,那么请考虑添加一个分布式缓存系统。在您每月的页面浏览量超过 1000 万之前,这可能不会发生。

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

    【讨论】:

    • 谢谢。我打算让它有点宽泛,因为我正在尝试获得新的想法:)
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢您的建议,我将不得不检查该阅读。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2011-07-09
      • 2017-07-24
      • 2012-04-13
      • 2011-02-10
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2012-07-30
      相关资源
      最近更新 更多