Replies: 4 comments 1 reply
-
Awesome use-case @danroot. Been a while since I looked at HLS myself. Could you remind me, what does a client do with a live HLS stream? Are they expected to re-request the playlist URL to find out where to get new segments from? Artillery's HLS plugin does not do that at the moment iirc, but it should be fairly straightforward to make it re-load the playlist (if that's the case). |
Beta Was this translation helpful? Give feedback.
-
Re plugin's output:
|
Beta Was this translation helpful? Give feedback.
-
Thanks - your reply helps me understand the output a bit better. In our case (RTSP traffic cameras restreamed from a Wowza server as HLS), it looks to me like a normal HLS client (HLS.js in this case) will just continually re-request the chunklist m3u8 (not initial playlist). I'm not versed enough in "on demand" HLS to know what would signal it to stop HLS stream. I can give you a public URL if you need, though we are doing all this to debug some issues under load so if you do use it, please don't hit it too hard. The traffic looks like this:
chunklist_w625761017.m3u8 is called indefinitely, and fresh .ts served up until the client is stopped. Reading your description, I'm not clear why it stopped at 30 segments - I would have expected 20 streams, each with 3 .ts segments, to result in 60 segments downloaded. Or if it only did the first segment, 20. Maybe because at 30 it was past duration:10? Regardless, it sounds like what we're wanting is a duration or numberOfSegments on the hls plugin? Thanks! |
Beta Was this translation helpful? Give feedback.
-
Artillery has already helped us look at some static files under load- great product. One clarification - I believe it's the chunklist , not the playlist, that would need to be reloaded. Honestly, we're deeper in the HLS spec than I usually dig, but in the HTTP above, that's all one stream. Player requests playlist.m3u8, which contains a chunklist_nnnn.m3u8. Player requests chunklist_nnnn.m3u8 which contains the .ts segments. Player requests the .ts segments, renders them, then repeats request of chunklist_nnnn.m3u8 until the player is stopped. I'd need to diff with a "non-live" m3u8 to figure out what signals it to continue requesting. I suspect it's one of the EXT-X-* codes. Thanks for your help on this. Will send a URL offline. |
Beta Was this translation helpful? Give feedback.
-
We would like to load test several always-on live HLS streams at once. As best I can find, the documents all describe load testing a "on demand" style HLS stream. I'm new to artillery, so not 100% sure I'm reading the output correctly. When I attempt load testing a "live" always-on stream, the .m3u8 request completes, but it's not clear to me where to set how long each user views the stream.
Is there a way to test, for example "600 users watching these two streams for 10 minutes each"?
Output:
Beta Was this translation helpful? Give feedback.
All reactions