Alvin
Alvin

Reputation: 10468

How to stress-test video streaming server?

Does anyone know any good tool that I can use to perform stress tests on a video streaming server? I need to test how well my server handles 5,000+ connections.

Upvotes: 23

Views: 29249

Answers (6)

Kalei White
Kalei White

Reputation: 111

A new plugin for JMeter has been released to help simulate a HLS scenario by using only one custom Sampler. Now, you don’t need multiple HTTP Request Samplers, ForEach Controllers or RegEx PostProcessors. This makes the whole process much simpler than before.

Instead, the complete logic is seamlessly encapsulated so you only have to care about the use case: the media type, playback time and network conditions. That’s it! The plugin is brand new and it can be installed via the JMeter Plugins Manager.

Here you can learn more about it:

https://abstracta.us/blog/performance-testing/how-to-run-video-streaming-performance-tests-on-hls/

Upvotes: 1

UBIK LOAD PACK
UBIK LOAD PACK

Reputation: 34566

For infrastructure, you can use either a JMeter SAAS or your own Cloud server to overcome possible network issues from your injector.

To reproduce user experience and have precious metrics about user experience, you can use Apache JMeter + this commercial plugin which simulates realistically the Players behavior without any scripting:

This plugin also provide the ability to simulate Adaptive Bitrate Streaming

Disclaimer : We are behind the development of this solution

Upvotes: 1

Shen
Shen

Reputation: 1

This HLS Analyzer software can be used for stress testing HTTP Live Streaming server and monitoring downloading performance.

Upvotes: -1

Dilip Rajkumar
Dilip Rajkumar

Reputation: 7074

I am also searching for the same answer, I come across with following tool may be it helps someone http://www.radview.com/Solutions/multimedia-load-testing.aspx

This tool is used to test video streaming. Hope it helps someone. I will update the answer if I get a better one .

Thanks.

Upvotes: 0

Andrew Edgecombe
Andrew Edgecombe

Reputation: 40392

One option is to use VLC. You can specify a url on the command line. (see here for details). You could then write a brief shell script to open up all 5000 connections.

eg. the following perl script (very quick hack - check before running, might cause explosions etc.)

$i = 0;
$myurl = "udp://someurl";
@cmdline = ("/usr/bin/vlc", "");
for( $i = 1; $i <= 5000; $i++ )
{
    if( $pid = fork )
    {
        # parent - ignore
    }
    elsif( defined $pid )
    {
        $cmdline[1] = sprintf "%s:%d", $myurl, $i;
        exec(@cmdline);
    }
    # elseif - do more error checking here
}

If your video streaming server is doing multicast it should be sufficient to open sockets and make them members of your 5000 multicast groups (without necessarily doing anything with the stream. By not actually decoding the stream you will reduce performance issues on the client end).

I'm not aware of any tools that will do this for you, but if you're up for writing your own utility you can start here for details.

edit: The second option assumes that the OS on your client machine has multicast capability. I mention that because (from memory) the linux kernel doesn't by default, and I'd like to save you that pain. :-)

Easy way to tell (again on Linux) is to check for the presence of /proc/net/igmp

Upvotes: 6

Nick Berardi
Nick Berardi

Reputation: 54894

start downloading 5000+ files of the same type with different connections. Don't really need to play them, because essentially the client video player, flash, windows media player, etc. will just be doing a download. So if you server can handle 5000+ downloads you will be fine. My bet is your bandwidth gives out before you server.

Upvotes: 2

Related Questions