C# .NET MVC应用程序的高CPU和内存使用率
我们在一个.NETMVC应用程序中看到了非常高的CPU和内存使用率,但似乎无法找到其原因。我们的团队没有访问web服务器本身的权限,而是在达到某些限制(90%以上的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应用程序来说是相当标准的。这里有几个表单,在那里登录/注销,一些管
- 当用户执行某些操作时,应用程序在后台运行多个线程
- 我们正在使用memcached(在与web服务器不同的机器上)
- 我们正在使用web套接字
您可以将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个左右的迷你配置文件。然后创建一个简单的网页来显示它们。工作得很好,只有链接的答案不是好答案。如果您在这里包含答案,并将任何链接用作备份,会更好。