【问题标题】:Profiling and output caching in ASP.NET MVCASP.NET MVC 中的分析和输出缓存
【发布时间】:2013-04-20 22:54:56
【问题描述】:

所以我最近刚从大学毕业就被一家财富 50 强公司的一个大部门聘用。我将支持一个全新的 ASP.NET MVC 应用程序 - 由承包商在 4 年内编写的超过一百万行代码。该系统最多可以同时处理 3 或 4 个请求,但随着请求的增多变得非常缓慢。它应该会在 2 周内上线......我正在寻找有关如何大幅提高可扩展性的实用建议。

我在 Uni 中得到的建议是始终先运行分析器。我已经和我的经理确定了相当大的工具预算,所以价格不是问题。什么是 ASP.NET MVC 的好甚至最好的分析器?

我也在考虑添加缓存。目前没有为 nHibernate 配置二级缓存和查询缓存。我目前的想法是为此目的使用 Redis。还要查看输出缓存,但不幸的是,大多数用户将登录该站点。有没有办法仍然缓存 MVC 提供的部分页面?

【问题讨论】:

    标签: sql-server asp.net-mvc performance nhibernate scalability


    【解决方案1】:

    您是否对应用程序进行了任何监控或检测设置?如果没有,我强烈建议从那里开始。几年来我一直在使用 New Relic 和 ASP.NET 应用程序,对此非常满意。

    您会立即获得一张漂亮的请求响应时间图表,该图表分为 3 种有助于响应时间的任务

    • .NET CLR - 运行 .NET 代码所花费的时间
    • 数据库 - 等待 SQL 请求所花费的时间
    • 请求队列 - 等待应用程序工作人员可用的时间

    它还按 MVC 操作分解性能,以便您查看哪些操作最慢。您还可以获得每个数据库查询的性能细分。我已经多次使用它来检测对于繁重的生产负载来说太慢的程序。

    如果您愿意,您可以让 New Relic 在您的页面中添加一些不显眼的 Javascript,以便您检测浏览器加载时间。这可以帮助您弄清楚“我在北美以外的用户平均花费 500 毫秒加载图像。我需要将我的图像移动到 CDN!”

    我强烈建议您使用一些这样的仪器软件。它肯定会为您指明正确的方向,并帮助您保持应用的可用性和健康性。

    Profiler 是一个方便的工具,用于观察应用如何与您的数据库通信并调试奇怪的行为。这不是性能检测的长期解决方案,因为它会给您的服务器带来负担,并且结果需要相当多的费力处理和消化才能为您描绘出清晰的画面。

    随机想法:检查您的应用程序池配置,并留意事件日志中是否有太多回收事件。当应用程序池回收时,需要 很长时间 时间才能再次响应。这只是其中一件会影响性能的事情,你可以扯掉头发试图追踪它。最近不正确的回收设置让我很痛苦,所以我才提到它。

    【讨论】:

      【解决方案2】:

      对于 nHibernate 分析(会话查询、缓存、执行时间),您可以使用 HibernatingRhinos Profiler。它是由开发 nhibernate 的人开发的,所以你知道它会很好地工作。

      这是它的网址: http://hibernatingrhinos.com/products/nhprof

      你可以试一试,看看它是否对你有帮助。

      【讨论】:

      • 谢谢塞尔吉奥。在开始优化特定部分(例如 nHibernate 相关代码)之前,我更愿意先确定最大性能问题所在的事实。
      猜你喜欢
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多