4

我们正在我们的 Intranet 上运行一个自定义应用程序,我们在最近升级它后发现一个问题,即 IIS 以 100% 的 CPU 使用率挂起,需要重置。

在确定解决方案时,我们回滚到以前的版本,而不是让用户陷入困境。第一步是重现问题——但我们不能。

这里有一些背景:

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 很高,站点确实变得缓慢,但内存使用量合理,没有任何问题。

有没有人有关于如何在非生产环境中重现此类问题的任何提示?我们真的很想重现错误,确定解决方案,然后再次测试以确保我们已经解决了它。在这个过程中,我们发现了一些我们已经改进的小东西可能会解决问题,但是如果我们能够重现问题并测试改进的版本,我真的会更有信心。

非常感谢任何工具、技术或理论!

4

3 回答 3

1

您可以在此博客条目中找到有关解决此类问题的一些信息。她的博客通常是一个很好的调试资源。

于 2008-08-13T06:13:21.590 回答
1

我有一篇关于在生产中调试 ASP.NET 的文章,它可能会提供一些指导。

于 2008-08-13T06:14:11.197 回答
0

你的测试环境真的和现场一样吗?即 2 个物理服务器上的 2 个单独的 vm 实例 - 具有网络连接和帐户类型?

数据库上是否还有其他实例?

IIS 中是否还有其他 Web 应用程序?

.Net 配置正确吗?

应用程序池配置是否适用于服务帐户? 试试看这个——关于 II6 优化性能的 MS 文章

很多套路。

于 2008-08-13T07:26:33.987 回答