ASP.NET MVC 在寻找瓶颈时迷失了方向

Posted

技术标签:

【中文标题】ASP.NET MVC 在寻找瓶颈时迷失了方向【英文标题】:ASP.NET MVC lost in finding botleneck 【发布时间】:2012-10-15 14:04:07 【问题描述】:

我有ASP.NET MVC 应用程序,它接受文件上传并使用 SignalR 进行结果池。该应用程序托管在具有 IIS7、4 Gb Ram 和两个核心 CPU 的 Prod 服务器上。

开发服务器上的应用程序运行良好,但是当我将它托管在具有大约 50 000 users per day 的 Prod 服务器上时,该应用程序在运行五分钟后变得不负责任。网页请求时间急剧增加,加载一页大约需要 30 秒。我试图记录所有MvcApplication.Application_BeginRequest 事件调用并在5 minutes 中获得9000 命中。不确定这样的应用的点击次数是否可接受。

我使用 ANTS 性能分析器(在 Prod 应用程序分析中没有用,速度慢并且占用所有内存)来分析代码,但分析器在我的代码/MSSQL 查询中没有显示任何时间延迟问题。

我还尝试监控 CPU 和 RAM 峰值问题,但没有发现任何问题。 CPU 百分比有时会达到 15%,但从未上升,内存使用率正常。

我怀疑 ASP.NET/IIS7 中的请求或线程限制有问题,但不知道如何分析它。

有人可以建议任何可以在这种情况下提供帮助的分析解决方案吗?已经尝试了两周没有任何结果:(

【问题讨论】:

听起来您正在消耗一些资源并且不得不等待它们释放。我会检查我的代码,以确保所有数据库连接在使用后都已关闭,所有服务客户端都已被释放,并且任何内存消耗量大的对象在完成后立即被释放。 【参考方案1】:

您可以尝试使用MiniProfiler,更具体地说,使用专为 ASP.NET MVC 应用程序创建的MiniProfiler.MVC3 NuGet 包。它将向您显示各种有用的信息,例如执行请求时不同方法所花费的时间。

【讨论】:

以上是关于ASP.NET MVC 在寻找瓶颈时迷失了方向的主要内容,如果未能解决你的问题,请参考以下文章

C# asp.net MVC3 中的日历控件

在 ASP.NET MVC 网站中运行计划任务

Silverlight 业务应用程序 - ASP.Net MVC

ASP.NET MVC + IIS7 + FireFox:URL 中的斜杠

ASP.NET MVC 和...YUI? jQuery?其他

如何防止在asp.net mvc中上传exe文件