我有一个web应用程序在web服务器上运行,我正在对它进行几个负载测试。但是,我不知道如何精确定位IIS瓶颈。
例如,我使用jMeter在我的IIS服务器上无限运行1000线程负载测试,一切都很好。然而,当我加载测试10000个线程时,服务器出现503服务不可用错误。如何找到这个错误的瓶颈,如何修复它?
我应该使用什么样的监控工具/方法来发现这些瓶颈并修复它?
我们需要逐步增加线程的数量。
1 thread, 5 threads, 20, 50, 100, 200, 500 and so on.
我们将得到一个断点,在该断点处服务器响应503错误。
像newrelic APM这样的工具很少。
进行压力测试:从1个用户开始,逐渐增加到10000个。
对于理想的系统,每秒的请求数将随着负载的增长而增长,而响应时间将保持不变。
然而,没有理想的系统,在某些时候,您会看到每秒的请求数量下降,响应时间增加。错误也会开始发生。在此之前的点被称为饱和点,它是当前系统所能提供的最大性能。
如果你再增加负荷,情况会变得更糟。使用活动线程超时侦听器或HTML报告仪表板的等效图表检查该阶段有多少用户在线,并将其报告为支持的最大负载。
您可以分析IIS日志文件,查看哪些请求的处理时间最长,并识别可能指示瓶颈的任何模式或趋势。
此外,您可以使用性能计数器来监视服务器资源利用率(CPU使用情况、内存使用情况和磁盘活动),例如您可以使用Perfmon在负载测试期间捕获这些计数器并分析数据以识别潜在的瓶颈。
参考链接:
https://learn.microsoft.com/en-us/iis/troubleshoot/performance-issues/troubleshooting-iis-performance-issues-or-application-errors-using-logparser
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/perfmon
https://techcommunity.microsoft.com/t5/iis-support-blog/perfmon-for-iis-and-asp-net/ba-p/826721