performance - IIS 7.5 WebAPI 性能扩展问题

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

我在 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 日志记录
  • 启用和禁用动态内容压缩

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

    最佳答案

    我建议进行以下步骤:

  • 仔细检查 JMeter 机器的健康状况,如果 JMeter 机器没有足够的资源,执行可能会由于 JVM 上的垃圾收集或 OS 级别的交换而暂停。此外,JMeter 默认设置仅适用于测试开发和调试,您至少需要在运行测试之前调整一些 JVM 参数。引用:
  • Concurrent, High Throughput Performance Testing with JMeter
  • 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure
  • 在 IIS 端的分析器工具遥测下重新运行您的测试,查看类似 dotTrace 的工具或 ANTS ,也许您的应用程序代码有问题。
  • 关于performance - IIS 7.5 WebAPI 性能扩展问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867549/

    相关文章:

    c++ - Armadillo 库会减慢矩阵运算的执行速度吗?

    c# - 提高 linq 查询的性能

    regex - 从 Jmeter 的站点地图中替换 ${url} 的一部分

    JMeter 将变量设置为随机选项

    javascript - 解析 Jquery Ajax 中的嵌套 XML 响应

    c# - 从控制台程序记录到 txt 文件的有效方法

    javascript - 为什么在 JS 中隐式转换比显式转换快得多?隐式类型转换是一种好习惯吗?

    testing - 我们可以通过jmeter.bat和ApacheJMeter.jar打开JMeter。有什么不同?

    .net - 使用 WEB API OData v4 调用元数据时出现 404 错误

    asp.net - 不允许用于访问此页面的 HTTP 谓词 Web Api IIS 7