1

We're using Apache JMeter with UbikLoadPack Video Streaming plugin delivering HLS, MPEG-DASH and MS Smooth formats and we will soon start massive load testing from our injectors.

What are the recommended configuration in terms of:

  • Machine
  • OS
  • System tuning
  • Java
UBIK LOAD PACK
  • 33,980
  • 5
  • 71
  • 116
Loc Ann
  • 455
  • 6
  • 24

1 Answers1

0

It is hard to answer such question as behaviour depends on at least those factors:

  • The type of Stream : HLS will perform better than MPEG-DASH and HSS, the 2 latest being more CPU consuming due to XML format
  • The duration of the Manifest, the biggest it is the more memory and parsing it will require
  • The refresh period, the shortest it is, the more it will consume memory and CPU

So the best advice is to calibrate based on your Manifests.

Some advices regarding your questions:

Machine:

  • Ensure you have enough bandwidth and network card
  • With "average Manifest" , you should have no issue load testing 700 to 1500 Threads (Virtual Users) with machine of type m5.2xlarge (8 vCPU / 16 to 32 Go)

OS

  • We advise you to use Linux/MacOS instead of Windows OS as you will get more Threads on same virtual/physical configuration.
  • But all work since Java is used

For linux apply following tuning:

 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

  • Ensure you use last minor version of Java 8 or 9.
  • Ensure you use Java 64 bits to be able to allocate more than 1.5/ 2GB memory. Check this by running

    java -version

Allocate enough heap based on your calibration, for example to allocate 6g Heap:

 -Xmx6g -Xms6g

Check in jmeter.log that the memory is really what you allocated, something like this, for 2g you would get:

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

Some advised GC tuning:

 -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 

You can read more in this blog:

UBIK LOAD PACK
  • 33,980
  • 5
  • 71
  • 116