Sql server ASP.NET MVC中的评测和输出缓存

Sql server ASP.NET MVC中的评测和输出缓存,sql-server,asp.net-mvc,performance,nhibernate,scalability,Sql Server,Asp.net Mvc,Performance,Nhibernate,Scalability,所以我最近刚从大学毕业,就被《财富》50强公司的一个大部门录用了。我将支持一个全新的ASP.NET MVC应用程序——由承包商在4年内编写的超过一百万行代码。该系统在处理多达3或4个同时请求时运行良好,但在处理更多请求时变得非常缓慢。它应该在两周后上线。。。我正在寻找关于如何大幅提高可伸缩性的实用建议 在Uni给我的建议是总是先运行分析器。我已经和我的经理达成了一个相当大的工具预算,所以价格不会有问题。对于ASP.NET MVC,什么是好的甚至是最好的探查器 我还考虑添加缓存。目前没有为nHib

所以我最近刚从大学毕业,就被《财富》50强公司的一个大部门录用了。我将支持一个全新的ASP.NET MVC应用程序——由承包商在4年内编写的超过一百万行代码。该系统在处理多达3或4个同时请求时运行良好,但在处理更多请求时变得非常缓慢。它应该在两周后上线。。。我正在寻找关于如何大幅提高可伸缩性的实用建议

在Uni给我的建议是总是先运行分析器。我已经和我的经理达成了一个相当大的工具预算,所以价格不会有问题。对于ASP.NET MVC,什么是好的甚至是最好的探查器

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

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

以下是它的URL:


您可以尝试一下,然后决定它是否对您有帮助。

您是否为该应用程序设置了任何监视或检测设置?如果不是,我强烈建议从那里开始。我已经在ASP.NET应用程序中使用了几年,并且对此非常满意

一开始,你就得到了一个很好的请求-响应时间图表,它被分解为3种任务,它们对响应时间有贡献

  • .NET CLR-运行.NET代码所花费的时间
  • 数据库-等待SQL请求所花费的时间
  • Request Queue—等待应用程序工作人员可用所花费的时间
它还按MVC操作分解性能,以便您可以看到哪些操作最慢。您还可以获得每个数据库查询的性能细分。我已经多次使用它来检测对于繁重的生产负载来说太慢的过程

如果您愿意,您可以让New Relic在页面中添加一些不引人注目的Javascript,允许您记录浏览器加载时间。这有助于您了解“我在北美以外的用户平均花费500毫秒加载图像。我需要将图像移动到CDN!”

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

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


随机思维:检查应用程序池配置,并在事件日志中查看太多回收事件。当应用程序池回收时,需要很长时间才能再次响应。这只是其中一种会扼杀性能的东西,你可以为了追踪它而把头发扯下来。最近,不正确的回收设置让我很头疼,所以我才提到它。

谢谢Sergio。在开始优化特定部分(例如nHibernate相关代码)之前,我更愿意首先确定最大性能问题所在的事实。