我们正在内联网上运行自定义应用程序,我们发现最近升级后出现问题,其中IIS挂起时CPU占用率为100%,需要重置。
我们在确定解决方案时,已经回滚到之前的版本,而不是让用户接受挂起。第一步是重现问题 - 但我们做不到。
以下是一些背景知识:
Prod有一个虚拟化(vmware)Web服务器,有两个CPU和2 GB RAM。数据库服务器也有4GB和2个CPU。它也在VMWare上,但是是单独的物理硬件。
在正常使用期间,应用程序运行良好。 w3wp.exe进程通常使用5-20%CPU和大约200MB RAM。在正常使用情况下,CPU和RAM略有波动,但没什么不寻常的。
但是,当我们开始遇到问题时,RAM会急剧上升,并且CPU会达到98%(或者可以达到的最大值)。该站点无响应,需要重新启动IIS。在这种情况下,重置应用程序池不会执行任何操作,需要重新启动IIS。
夜间没有发生(没有使用)。当网站负载不足时会发生更多情况,但也会在非高峰时段发生。
解决这个问题的第一步是复制它。为了模拟负载,我们开始使用JMeter来模拟使用情况。我们的加载脚本基于崩溃时的实际使用情况。使用JMeter,我们可以将使用率提高到相当高的水平(崩溃期间负载的2-3倍),但网站表现良好。 CPU处于高位,网站确实变得迟缓,但内存使用情况合理且没有任何问题。
有没有人知道如何在非生产环境中重现这样的问题?我们真的想重现错误,确定解决方案,然后再次测试以确保我们已经解决了。在此过程中,我们发现了许多可以解决问题的小事,但如果我们能够重现问题并测试改进的版本,我真的会感到更自信。
非常感谢任何工具,技术或理论!
答案 0 :(得分:1)
您可以在this blog entry找到有关解决此类问题的一些信息。她的博客通常是一个很好的调试资源。
答案 1 :(得分:1)
我有an article about debugging ASP.NET in production可能会提供一些指示。
答案 2 :(得分:0)
您的测试是否与实时相同? 即 2个物理服务器上有2个独立的虚拟机实例 - 具有网络连接和帐户类型?
数据库上还有其他实例吗?
IIS中是否还有其他Web应用程序?
.Net Config是对的吗?
App Pool Config是否适合服务帐户? Try look at this - MS Article on II6 Optmising for Performance
很多技巧。