IIS 7.5 WebAPI性能扩展问题

4
我在IIS的WebAPI解决方案中遇到了响应时间急剧上升的问题。我使用一个简单的JMeter测试计划在我的开发机器上运行负载。我的测试计划使用15个线程重复执行15个静态调用。负载大约为7分钟内的90K个请求,吞吐量约为203个请求每秒
在线程逐步增加的过程中,JMeter正在增加负载,响应时间开始包含尖峰,并持续整个测试过程。机器和应用程序似乎并没有真正劳累:CPU的负载约为30-40%,因此远未达到饱和状态。整个测试期间,该应用程序没有返回任何错误。
有关应用程序和机器的详细信息:
  • 应用程序是.Net 4.6 WebAPI解决方案。缓存存储在机器本身的内存中。
  • 托管在IIS 7.5上,位于4CPU / 4GB RAM机器上
  • 使用一个工作进程的集成管道应用程序池(.Net 4)
  • 进程模型设置为machine.config文件中的自动配置。
到目前为止,我尝试解决这个问题的方法:
  • 通过在不同的机器和位置上执行测试,消除网络和其他基础设施的影响。即使在具有本地主机调用的情况下,也是如此。
  • 将“ASP每处理器线程限制”从25增加到100(最大值)
  • 将工作进程数量增加到4个
  • 完全禁用IIS日志记录
  • 启用和禁用动态内容压缩
希望有人能指导我正确的方向。谢谢!
1个回答

3
我建议采取以下步骤:
  1. 双重检查JMeter机器的健康状况,如果JMeter机器资源不足,则执行可能会因JVM上的垃圾收集或OS级别上的交换而暂停。此外,JMeter默认设置仅适用于测试开发和调试,您需要在运行测试之前调整至少一些JVM参数。参考资料:

  2. 在IIS端重新运行带有分析器工具遥测的测试,检查像dotTraceANTS这样的工具,也许您的应用程序代码出了问题。

我一直专注于IIS的扩展,太过于专注了!我没有提到我的JMeter测试是从命令行运行的,因此在这方面没有内存不足等问题。通过使用dotTrace进行分析后,Ninject DI容器似乎会对某些请求产生性能损失,但我需要进一步验证这些早期发现。感谢您的建议! - Oskar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接