1

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

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

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

4

2 回答 2

2

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

马上你会得到一个很好的请求响应时间图表,分为 3 种有助于响应时间的任务

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

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

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

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

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

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

于 2013-04-26T17:50:53.060 回答
0

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

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

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

于 2013-04-26T17:29:08.137 回答