【问题标题】:performance boosters for an asp.net website in production server生产服务器中 asp.net 网站的性能提升器
【发布时间】:2010-09-06 07:47:32
【问题描述】:

我在生产服务器中有一个 asp.net webforms 应用程序,它真的很慢。所以我决定从我的 SO 用户那里获得一些性能提示。

我已经应用这些来提高我的 asp.net 网站性能,

  1. 设置debug=false

  2. off追踪

  3. 图像缓存

           <caching>
            <profiles>
                <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                <add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                <add extension=".gif" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
            </profiles>
        </caching>
    

你知道任何其他真正的性能助推器吗?任何建议...

【问题讨论】:

  • 答案可能是这取决于您的具体情况。 ViewState 可能是一回事,缓存静态内容(或不经常更改的内容),压缩 html 输出?

标签: asp.net performance webforms


【解决方案1】:

网页只有通过设计才能快速。

一个简单的选项不能让你的页面加载得更快。 debug=off 只是消除了额外的调试功能,实际上如果你不使用它们也不会多想。

我同意 Paul 所说的一切,你可以found them here with more details 我不得不说是额外的......

您需要遵循一些指南并做大量工作以使其真正快速。 我所遵循的。

  1. 我使用(自定义)我的数据库操作缓存,这确实提高了数据加载速度,但同时使代码更多,我花了很多时间。
  2. 我已使用 profiler 在页面上找到我的慢点并进行更正。
  3. 我使用 Google Chrome 浏览器上的 Inspector定位加载缓慢和双重加载问题。
  4. 我在自定义控件上消除了任何变量的双重使用/创建
  5. 我在基于this suggestions 的客户端浏览器上使用缓存。
  6. 我使用 webfarm 和/或 webgarden(不止一个池)。

如何查看你的页面速度:http://code.google.com/speed/page-speed/docs/using.html

优化缓存:http://code.google.com/speed/page-speed/docs/caching.html

可以在此处找到来自 google 的许多常规主题:http://code.google.com/speed/articles/

关于缓存:http://www.mnot.net/cache_docs/

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    不是直接 ASP.NET,而是

    1) 确保在 IIS 中启用压缩。

    2) 如果您的网站是 cookie “重”,则在单独的域中托管静态文件(图像、CSS 和 JS)。每个返回服务器的请求都需要将所有站点 cookie 信息发送回服务器。因此,如果您的 cookie 使用量为 10kb+,那么页面内的 20 个静态文件引用将导致总共将额外的 200kb 发送回服务器。如果您将静态文件移至没有 cookie 要求的域,则可以消除此开销。值得注意的是,由于 IE 处理事物的方式存在“错误”,您在使用子域时没有任何好处,IE 似乎坚持将所有域 cookie 发送到子域。这样做的另一个好处是允许更多 HTTP requests in parallel

    【讨论】:

      【解决方案3】:

      停止入侵您的生产服务器(这可能会引入功能错误)并退后一步。你能在非生产环境中重现性能问题吗?如果没有,那就努力尝试吧。

      您应该尝试重现该问题,如下所示:

      • 在您的测试环境中获得生产级硬件 - Web 和数据库服务器等 - 运行与生产相同的硬件
      • 运行与生产相同的软件集 - 这包括相同的 ASPNET 配置和使用的所有其他服务。
      • 将生产规模的数据(如果可能的话,生产数据)加载到您的数据库中(请记住将您的实验室与互联网隔离,使其无法向互联网发送邮件或其他内容,否则您的用户可能会开始接收来自测试的电子邮件通知系统会很糟糕!)
      • 将网站的模拟流量创建到生产级别 - 这可能非常棘手,但有很多可用的工具

      现在您有机会在测试中重现问题,您可以尝试解决方案。

      通常数据库驱动的网站会受到数据库的限制,所以我将从那里开始。主要技巧是

      • 减少查询次数
      • 优化您所做的查询(获取更少的数据,使用适当的索引等)
      • 更改数据库结构,以便您执行的查询更容易(聚集索引等,可能是非规范化)

      但是您所做的任何更改,请在您的测试系统上尝试,测量结果,如果没有帮助,请回滚。

      一般而言,配置更改可能只会产生微小的差异,但您也可以尝试这些。


      如果这一切听起来太费力了,请尝试将硬件投入到问题上 - 开发人员的时间比硬件要昂贵得多。在完成上述操作所需的时间(可能需要几个月,具体取决于应用程序的复杂性),您可能已经购买了一些多肉的生产盒。但请确保它会有所帮助。

      您的数据库是否适合 RAM?它可能适合ram吗?如果这些问题的答案分别是“否”和“是”,请为数据库购买更多内存。这是在不更改代码的情况下让您的数据库运行得更快的最便宜的方法之一。

      【讨论】:

        猜你喜欢
        • 2010-11-23
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多