【发布时间】:2010-09-05 18:54:23
【问题描述】:
我们在 Intranet 上运行自定义应用程序,最近升级后发现一个问题,即 IIS 在 CPU 使用率达到 100% 时挂起,需要重置。
在确定解决方案时,我们已回滚到以前的版本,而不是让用户陷入困境。第一步是重现问题——但我们不能。
这里有一些背景:
Prod 有一个带有两个 CPU 和 2 GB RAM 的虚拟化 (vmware) Web 服务器。数据库服务器有 4GB,还有 2 个 CPU。它也在 VMWare 上,但是是独立的物理硬件。
在正常使用期间,应用程序运行良好。 w3wp.exe 进程通常使用 5-20% 的 CPU 和大约 200MB 的 RAM。 CPU 和 RAM 在正常使用情况下会略有波动,但没有什么异常。
但是,当我们开始遇到问题时,RAM 会急剧攀升,CPU 会稳定在 98%(或尽可能多)。该站点变得无响应,需要重新启动 IIS。在这种情况下,重置应用程序池不起作用,需要完全重新启动 IIS。
它不会在夜间发生(不使用)。当网站处于负载状态时,这种情况会发生更多,但在非高峰期也会发生。
解决这个问题的第一步是重现它。为了模拟负载,我们开始使用 JMeter 来模拟使用。我们的加载脚本基于崩溃时的实际使用情况。使用 JMeter,我们可以提高使用率(崩溃期间负载的 2-3 倍),但站点运行良好。 CPU 很高,网站确实变得迟缓,但内存使用合理,没有任何问题。
有人对如何在非生产环境中重现此类问题有任何提示吗?我们真的很想重现错误,确定解决方案,然后再次测试以确保我们已经解决了它。在此过程中,我们发现了一些我们已经改进的小东西可能会解决问题,但如果我们能够重现问题并测试改进的版本,我真的会更有信心。
非常感谢任何工具、技术或理论!
【问题讨论】:
-
我假设您有来自 IIS 和/或您的应用程序的日志记录功能?当问题开始时,究竟是什么导致了这种情况?这与您的负载测试模拟的有什么不同?
-
我有同样的问题,看看你的 vmware 性能日志,看看一两个月的内存,对我们来说,每 8-10 天就会发生一次,当我们的内存较少时每六天。看起来有内存泄漏。我们在真实的物理服务器上运行完全相同的网站,没有问题,这似乎是 IIS 和 vmware 的问题。要回答您的问题,请尝试运行加载工具一段时间(几周)并在测试服务器上设置跟踪。如果您找到解决方案,请发布,我无处可去。
标签: asp.net performance memory crash cpu