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:
It is hard to answer such question as behaviour depends on at least those factors:
So the best advice is to calibrate based on your Manifests.
Some advices regarding your questions:
Machine:
OS
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 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: