5

我们看到我们的一个 .NET MVC 应用程序占用了大量的 CPU 和内存,并且似乎无法找到它的原因。我们的团队无法访问 Web 服务器本身,而是会在达到某些限制(CPU 或内存的 90+%)时自动收到通知。在本地运行我们似乎找不到问题。我们认为可能是罪魁祸首的一些项目

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

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

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

  1. 在应用程序本身内创建一个页面(仅适用于应用程序管理员),显示有关正在使用的内存和 CPU 的信息。有没有这样的例子,甚至有可能吗?
  2. 使用安装在 Web 服务器上的某种类型的 3rd 方分析服务或应用程序,并允许我们向下查找导致应用程序中 CPU 和内存使用率高的原因。
4

3 回答 3

2

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

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

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

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

于 2013-03-25T21:05:05.747 回答
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 有一个内置的分析器(取决于版本和版本)。您可以通过WMI 查询有问题的 Web 服务器,或者编写/提供诊断记录/监控工具以将它们交给有权访问的人。

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

于 2012-12-21T13:10:24.000 回答
-2

我有类似的情况,我根据这个项目为我的应用管理员创建了一个系统监视器

于 2013-03-25T21:01:32.383 回答