JMeter 和 UbikLoadPack:建议调整负载测试视频流服务器

JMeter and UbikLoadPack : Advised tuning for load testing video streaming servers

我们正在使用 Apache JMeter with UbikLoadPack 提供 HLS、MPEG-DASH 和 MS Smooth 格式的视频流插件,我们将很快开始对注入器进行大规模负载测试。

在以下方面有哪些推荐配置:

很难回答这样的问题,因为行为至少取决于这些因素:

  • Stream 的类型:HLS 将比 MPEG-DASH 和 HSS 表现更好,由于 XML 格式
  • ,最新的 2 个 CPU 消耗更多
  • Manifest 的持续时间,最大的是它需要更多的内存和解析它
  • 刷新周期,越短越消耗内存CPU

所以最好的建议是根据您的清单进行校准。

关于您的问题的一些建议:

机器:

  • 确保你有足够的带宽和网卡
  • 使用 "average Manifest" ,使用 m5.2xlarge 类型的机器(8 vCPU / 16 到 32 Go)负载测试 700 到 1500 个线程(虚拟用户)应该没有问题

OS

  • 我们建议您使用 Linux/MacOS 而不是 Windows OS,因为您将在相同的 virtual/physical 配置上获得更多线程。
  • 但是使用 Java 后的所有工作

对于 linux 应用以下调整:

 net.ipv4.tcp_syncookies=1
 net.core.netdev_max_backlog=5000
 net.ipv4.tcp_max_syn_backlog=4096
 net.core.somaxconn=5000
 net.core.rmem_max=8388608
 net.core.wmem_max=8388608
 net.ipv4.tcp_no_metrics_save=1
 net.ipv4.tcp_keepalive_probes=2
 net.ipv4.tcp_keepalive_intvl=20
 net.ipv4.tcp_fin_timeout=15
 net.ipv4.tcp_max_syn_backlog=5000
 net.ipv4.tcp_keepalive_time=300
 net.ipv4.tcp_tw_recycle=0
 net.ipv4.tcp_tw_reuse=1
 net.ipv4.tcp_sack=1
 net.ipv4.tcp_dsack=0
 net.ipv4.ip_local_port_range= 1025 65000
 vm.swappiness = 5
 net.ipv4.tcp_slow_start_after_idle = 0

Java

  • 确保您使用 Java 8 或 9 的最后一个次要版本。
  • 确保您使用 Java 64 位能够分配超过 1.5/ 2GB 的内存。通过 运行

    检查

    java-版本

根据您的校准分配足够的堆,例如分配 6g 堆:

 -Xmx6g -Xms6g

查看jmeter.log内存确实是你分配的内存,类似这样,2g你会得到:

 2018-03-14 21:55:09,662 INFO o.a.j.JMeter: Max memory     =2058 354 688

一些建议的 GC 调整:

 -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=30 
 -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 
 -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false 
 -XX:MaxMetaspaceSize=256m -XX:G1HeapRegionSize=32m -Xss256k 

您可以在此博客中阅读更多内容: