.NET MVC应用程序的高CPU和内存使用率

时间:2012-09-07 12:27:05

标签: c# .net asp.net-mvc-3 memory cpu-usage

我们看到来自我们的一个.NET MVC应用程序的CPU和内存使用量非常高,而且似乎无法追踪它的原因。我们的组无法访问Web服务器本身,而是在遇到某些限制时(90%或CPU或内存)自动得到通知。在本地运行我们似乎无法找到问题。我们认为的一些项目可能是罪魁祸首

  • 当用户采取某些行动时,该应用程序在后台运行许多线程
  • 我们正在使用memcached(在与Web服务器不同的机器上)
  • 我们正在使用网络套接字

除此之外,就Web应用程序而言,该应用程序非常标准。这里有几个表单,登录/注销,一些管理用户和数据的管理功能;没有什么超级花哨的。

我正在研究两种不同的解决方案,并想知道什么是最好的。

  1. 在应用程序内部创建一个页面(仅适用于应用程序管理员),该页面显示有关正在使用的内存和CPU的信息。有这样的例子还是可能?
  2. 使用安装在Web服务器上的某种类型的第三方概要分析服务或应用程序,并允许我们下载以查找导致应用程序中CPU和内存使用率过高的原因。

3 个答案:

答案 0 :(得分:2)

我推荐使用asp.net mvc miniprofiler。 http://miniprofiler.com/

它易于实现和扩展,可以在生产模式下运行,可以将其结果存储到SQL Server。我多次使用它来发现难以解决的性能问题。

另一种可能性是将http://getglimpse.com/与miniprofiler glimpse-plugin https://github.com/mcliment/miniprofiler-glimpse-plugin结合使用

这两个工具都是开源的,不需要管理员访问服务器。

答案 1 :(得分:1)

您可以将Preemptive的运行时智能连接到它。 - http://www.preemptive.com/

否则,分析器或负载测试可以帮助您找到问题。你有什么监控实际机器健康状况的吗? (处理器使用情况,内存使用情况,磁盘队列长度等)。

http://blogs.msdn.com/b/visualstudioalm/archive/2012/06/04/getting-started-with-load-testing-in-visual-studio-2012.aspx

Visual Studio有一个内置的profiler(取决于版本和版本)。您可以WMI query出现问题的Web服务器,或者编写/提供诊断记录/监控工具,将其交给有权访问的人。

你有任何输出缓存吗?什么版本的IIS? 90%的处理器使用情况是否会被警告显示您的Web进程实际上就是这样做的? (如果警报配置不当,可能不是您的应用程序)

答案 2 :(得分:-2)

我有类似的情况,我根据this project

为我的应用管理员创建了一个系统监视器