asp.net – 在非生产环境中复制与负载相关的崩溃

我们在内联网上运行自定义应用程序,最近升级后发现问题,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处于高位,网站确实变得迟缓,但内存使用情况合理且没有任何问题.

有没有人有关于如何在非生产环境中重现这样的问题的任何提示?我们真的想重现错误,确定解决方案,然后再次测试以确保我们已经解决了.在这个过程中,我们发现了许多可以解决问题的小事,但如果能够重现问题并测试改进的版本,我真的会感到更自信.

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

最佳答案 您可以在
this blog entry找到有关解决此类问题的一些信息.她的博客通常是一个很好的调试资源.

点赞