ASP.NET高CPU使服务器屈指可数


8

好的,我们的新版本在每台服务器上随机间隔有100%的CPU峰值。长期以来,它会使网站完全无响应-这将在高峰时期,因为不同国家的人登录到网站等。

我们研究了perfmom,内存探查器,CLR探查器,sql探查器,Red Gate蚂蚁探查器,尝试在UAT中进行负载测试-但甚至无法重现该问题。这可能意味着只有成千上万的用户点击了实时站点才导致它发生。

我们确实注意到的一种模式是,新代码-残破的构建-实际上使用了明显更少的线程。

我们还在IOC上使用弹簧-它有床的声誉吗?

更糟糕的是,由于业务影响,我们无法部署到现场-因此无法将问题缩小到我们添加的新功能的子集。

我们确实被摧毁了-有人有任何战斗伤痕可以挽救我们的生命吗?


温度传感器报告什么?我想知道您的电源是否跟不上。(不知道如何检查。)
sarnold 2011年

2
当您说关闭服务器时,您可以添加更多详细信息吗,是BSOD吗?您是说它重启还是应用程序域重启。

根本没有“ 100%cpu 峰值 ”可以“关闭”服务器。它必须长时间固定在100%,再加上散热问题。
Andrew Barber

1
它在做什么??哪个进程在峰值使用CPU?这是最重要的问题。
Aliostad 2011年

更新了我的问题-这样更好吗?感谢-1 :)

Answers:


3

我建议进行内存转储,并在SoD的WinDdg中对其进行分析。我修复了生产中的一些问题,如果没有WinDbg,我可能无法诊断。

Tess Fernandez的博客不错,您可以在其中学习如何分析内存转储。


该博客是一个极好的资源,我们一直在使用它。我们的问题是我们无法再次创建问题并获得转储。

1
要重现问题,您可以用锤JMeter的(测试系统jmeter.apache.org)和AB(httpd.apache.org/docs/2.0/programs/ab.html)。有了这些,多核,快速的LAN和一些同事,您应该能够对服务器施加足够的压力。
罗马

1

这通常是由GC中大型的长期对象清除引起的(stackoverflow出现了此问题,请参阅link)。您是否在缓存或会话中存储了大量对象集合?

GC袭击

我还建议您在生产环境中构建和配置新服务器以进行测试。如果您随机发疯,不知道为什么并且无法重现它,那么我会指点硬件或配置,而不是代码。


我们无法发布任何新代码,因为它增加了新闻功能。当代码处于活动状态时,GC的用法是相同的-包括第2代。谢谢。-您还有其他建议吗?

这并非不可能,但是硬件和配置与我们已还原并成功运行的上次部署几乎相同。

1

这是具有共享资源的虚拟服务器还是物理服务器?如果是前者,那么您可以考虑将资源专用于该服务器。祝好运...


0

尝试使用cache server作为的前端Apache Traffic Server (ATS)

虽然这不能解决问题,但可能会有所帮助,因为您将同时从后端移动潜在有害的负载(查看前端是否也有问题),并使后端的热量减少,因此可以更容易发现问题所在。


0

试图在没有数据的情况下猜测故障是没有意义的。是的,stackoverflow上或您的工程团队中的某人可能会很幸运,但这只是糟糕的工程,您无法制定计划花费多长时间才能尝试每一个猜测,以及您是否会发现问题。

  1. 您必须重现问题。Jmeter具有广泛性,因此是一个不错的开始,但是如果不了解我们的体系结构,我们就无法推荐合适的工具。
  2. 必须在应用程序层中特别记录。您可以启用IIS跟踪以降低性能,但是Microsoft的muppet做到了,因此您无法在速度较慢时捕获整个管道流。如果是这样很难摄制,你真的像一些日志,以帮助您缩小哪里出了问题。(就像哦,每当我们调用此存储的proc时)。

100%CPU在某种程度上有点可疑,因为它不太可能是I / O(假设db是另一个盒子,慢速的数据库不会导致Web服务器上的100%CPU)。您需要靠近家。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.