【问题标题】:IIS 7.5 WebAPI performance scaling issueIIS 7.5 WebAPI 性能扩展问题
【发布时间】:2016-08-10 08:04:42
【问题描述】:

我遇到了 IIS 中的 WebAPI 解决方案导致响应时间增加的问题。 我使用在我的开发机器上运行的简单 JMeter 测试计划生成负载。我的测试计划使用 15 个线程重复 15 个静态调用。负载是 7 分钟内大约 90K 请求。吞吐量约为203 requests per second

在线程加速期间,JMeter 正在增加负载,响应时间开始包含在整个测试中持续的峰值。机器和应用程序似乎并没有真正出汗:CPU 上的负载约为30-40%,因此远未达到饱和。在整个测试过程中,应用程序没有返回任何错误。

关于应用程序和机器的细节:

  • 该应用程序是一个 .Net 4.6 WebAPI 解决方案。缓存位于机器本身的内存中。
  • 托管在 IIS 7.5 上,在 4CPU /4GB RAM 机器上
  • 使用一个工作进程的集成管道应用程序池 (.Net 4)
  • machine.config 文件中的流程模型设置为自动配置。

到目前为止我为解决此问题所做的尝试:

  • 通过在不同的机器和位置执行测试,消除来自网络和其他基础设施的影响。甚至在调用中带有 localhost 的机器上。
  • 将“每个处理器的 ASP 线程限制”从 25 增加到 100(最大值)
  • 将工作进程数增加到 4 个
  • 完全禁用 IIS 日志记录
  • 启用和禁用动态内容压缩

希望有人能够为我指明正确的方向。谢谢!

【问题讨论】:

    标签: performance jmeter asp.net-web-api2 iis-7.5 performance-testing


    【解决方案1】:

    我建议继续下一步:

    1. 仔细检查 JMeter 机器的健康状况,如果 JMeter 机器没有足够的资源,执行可能会由于 JVM 上的垃圾收集或操作系统级别的交换而暂停。此外,JMeter 默认设置仅适用于测试开发和调试,您需要在运行测试之前调整至少一些 JVM 参数。参考资料:

    2. 在 IIS 端的探查器工具遥测下重新运行测试,检查 dotTraceANTS 等工具,可能是您的应用程序代码有问题。

    【讨论】:

    • 我专注于 IIS 扩展,是的隧道视野!我没有提到我的 JMeter 测试是从命令行运行的,因此没有内存不足问题和其他问题。在使用 dotTrace 进行分析后,Ninject DI 容器似乎在某些请求中会降低性能,但为了验证这些早期发现,我将不得不做更多的事情。感谢您的意见!
    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多