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

C# .NET MVC应用程序的高CPU和内存使用率,c#,.net,asp.net-mvc-3,memory,cpu-usage,C#,.net,Asp.net Mvc 3,Memory,Cpu Usage,我们在一个.NETMVC应用程序中看到了非常高的CPU和内存使用率,但似乎无法找到其原因。我们的团队没有访问web服务器本身的权限,而是在达到某些限制(90%以上的CPU或内存)时自动收到通知。在本地运行时,我们似乎找不到问题。我们认为一些物品可能是罪魁祸首 当用户执行某些操作时,应用程序在后台运行多个线程 我们正在使用memcached(在与web服务器不同的机器上) 我们正在使用web套接字 除此之外,该应用程序对于web应用程序来说是相当标准的。这里有几个表单,在那里登录/注销,一些管

我们在一个.NETMVC应用程序中看到了非常高的CPU和内存使用率,但似乎无法找到其原因。我们的团队没有访问web服务器本身的权限,而是在达到某些限制(90%以上的CPU或内存)时自动收到通知。在本地运行时,我们似乎找不到问题。我们认为一些物品可能是罪魁祸首

  • 当用户执行某些操作时,应用程序在后台运行多个线程
  • 我们正在使用memcached(在与web服务器不同的机器上)
  • 我们正在使用web套接字
除此之外,该应用程序对于web应用程序来说是相当标准的。这里有几个表单,在那里登录/注销,一些管理功能来管理用户和数据;没什么特别的

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

  • 在应用程序内部创建一个页面(仅对应用程序管理员可用),显示有关所用内存和CPU的信息。有这样的例子吗,或者甚至有可能吗
  • 使用某种类型的第三方评测服务或应用程序,这些服务或应用程序安装在web服务器上,并允许我们开车去寻找导致应用程序中CPU和内存使用率高的原因
    您可以将Preemptive的运行时智能连接到它。-

    否则,探查器或负载测试可能有助于找到问题。您是否有任何监控机器实际运行状况的设备?(处理器使用率、内存使用率、磁盘队列长度等…)

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


    你有输出缓存吗?什么版本的IIS?您收到的90%的处理器使用率是否会显示您的web进程实际上就是执行此操作的进程?(如果警报配置不正确,可能不是你的应用程序)

    我也遇到过类似的情况,我基于为我的应用程序管理员创建了一个系统监视器。我建议使用asp.net mvc miniprofiler

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

    另一种可能是与miniprofiler插件结合使用


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

    是否有数据库运行在同一台物理/逻辑计算机上?否,该数据库位于单独的计算机上。请使用探查器,如.或ANTS Performance profiler;-)有这样一个问题。在我的例子中,部分视图是在foreach循环中编写li元素。看起来他们没有使用stringbuilder。700项=浪费5秒的时间。仅在生产上发生。如果无法远程查询wmi,您还可以创建一个调用wmi诊断的MVC页面,并在那里显示它们。作为wmi查询的示例-如果您需要翻译VB的帮助,请告诉我您可以解释为什么推荐此项。我们使用miniprofiler在生产上执行性能/代码路径,它帮助我们确定了什么是慢的,作为奖励,用户实际使用了什么。只需覆盖IStorage并存储最后200个左右的迷你配置文件。然后创建一个简单的网页来显示它们。工作得很好,只有链接的答案不是好答案。如果您在这里包含答案,并将任何链接用作备份,会更好。