Poor remote streaming performance

Server Version#:1.26.2.5797
Player Version#:various devices, web, android, samsung-tv

Some of my friends have no issue at all playing 4k content, most however can only do 2mbps (720p low) without having issues with lots of buffering.
Server is an AMD Ryzen 7 2700, 16GB ram, NVIDIA 1650 and hardware transcoding does work, and a 1gbps internet symmetric internet connection, running Ubuntu 20.04.4 LTS.

All local streaming never has any issue ever, and 2 remote users don’t have issues streaming 4k. But most other users the server is basically un-usable it buffers so often unless the quality is turned to garbage.

Are there any good places to start looking because I’m not sure what else to check. Local streaming works so it’s not a filesystem performance issue (library files are on a NAS). SOME users it works, so it’s not an internet upload bandwidth issue. Logs show hardware transcoder is faster than real time, so even if 4k → 1080p needs to happen that’s not an issue.

I’ve told my friends to just get better internet as a half-joke, but still they don’t have any issues with other streaming from companies that spend 100’s of millions on content delivery networks :slight_smile:

There is a very easy way to get the first layer of answers – How fast from them to you?

  1. You install iperf3
  2. Set it up to run as a server (iperf3 -s)
  3. It will open port 5901 (default port) and wait for 1 connection .
  4. Open a port-forwarding from your modem router (5901 external → 5901 internal)

Now they install iperf3 as well on their machine.

Depending on which version they get (GUI or command line based). they run:

  1. iperf3 -c your.wan.ip.address
  2. iperf3 -c your.wan.ip.address -R

If you want to run for an interval longer than 10 seconds, add -t <seconds> to each command.

The most important test is for them to use the -R . This is your server sending to them.

As example, here is my desktop running to my server.

[chuck@lizum ~.2001]$ iperf3 -c 192.168.0.20
Connecting to host 192.168.0.20, port 5201
[  5] local 192.168.0.13 port 43880 connected to 192.168.0.20 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.08 GBytes  9.31 Gbits/sec    0   1.59 MBytes       
[  5]   1.00-2.00   sec  1.09 GBytes  9.41 Gbits/sec    0   1.59 MBytes       
[  5]   2.00-3.00   sec  1.09 GBytes  9.39 Gbits/sec    0   1.59 MBytes       
[  5]   3.00-4.00   sec  1.09 GBytes  9.41 Gbits/sec    0   1.67 MBytes       
[  5]   4.00-5.00   sec  1.09 GBytes  9.39 Gbits/sec    0   1.67 MBytes       
[  5]   5.00-6.00   sec  1.09 GBytes  9.41 Gbits/sec    0   1.67 MBytes       
[  5]   6.00-7.00   sec  1.09 GBytes  9.40 Gbits/sec    0   1.75 MBytes       
[  5]   7.00-8.00   sec  1.09 GBytes  9.39 Gbits/sec    0   1.75 MBytes       
[  5]   8.00-9.00   sec  1.09 GBytes  9.39 Gbits/sec    0   1.75 MBytes       
[  5]   9.00-10.00  sec  1.09 GBytes  9.39 Gbits/sec    0   1.75 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  10.9 GBytes  9.39 Gbits/sec    0             sender
[  5]   0.00-10.01  sec  10.9 GBytes  9.38 Gbits/sec                  receiver

iperf Done.
[chuck@lizum ~.2002]$ iperf3 -c 192.168.0.20 -R
Connecting to host 192.168.0.20, port 5201
Reverse mode, remote host 192.168.0.20 is sending
[  5] local 192.168.0.13 port 43884 connected to 192.168.0.20 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.07 GBytes  9.18 Gbits/sec                  
[  5]   1.00-2.00   sec  1.10 GBytes  9.42 Gbits/sec                  
[  5]   2.00-3.00   sec  1.09 GBytes  9.38 Gbits/sec                  
[  5]   3.00-4.00   sec  1.10 GBytes  9.42 Gbits/sec                  
[  5]   4.00-5.00   sec  1.09 GBytes  9.39 Gbits/sec                  
[  5]   5.00-6.00   sec  1.10 GBytes  9.42 Gbits/sec                  
[  5]   6.00-7.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   7.00-8.00   sec  1.09 GBytes  9.38 Gbits/sec                  
[  5]   8.00-9.00   sec  1.09 GBytes  9.34 Gbits/sec                  
[  5]   9.00-10.00  sec  1.09 GBytes  9.36 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec  10.9 GBytes  9.36 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  10.9 GBytes  9.37 Gbits/sec                  receiver

iperf Done.
[chuck@lizum ~.2003]$

It shows 9.38 and 3.36 Gbps as the averages

Friend with the best streaming performance measured 209Mbps continuous (up and down were within 10Mbps).
Friend with the worst streaming performance measured 193Mbps continuous (again up and down were within 10Mbps.

seems kinda similar to me, and more than 2x the bitrate of my highest 4k HDR movie.

Is that iperf3 result or Speedtest result?

Speedtest only measures from the central server to them.
It does not measure the point-to-point path between the two of you.

Iperf3 only measures the point-to-point speed.

That’s iperf3, from remote users directly to my plex server via the opened port.

Is that performance from one of the users who can’t stream from you without the excessive buffering?

When you ran the iperf tests, do you remember the retry count?

I am asking because:

  1. Local – Not an issue
  2. TWO remote users – full quality 4K
  3. There can’t be an upload problem from the network perspective.

If the bandwidth test is from a user who can’t stream then the problem is receiving and it must be at their end.

Think about it. Your upload is clear.
If their computer to you proves the bandwidth point-to-point is clear then the problem must be from their modem/router and how it connects to their player

What’s unique about their setup / how are they setup ?
What’s their download speed ?
Are their players wired or WiFi ? (2.4 or 5 Ghz? B, G, N, or AC ?)

iperf tests were from two users, one who can stream 4k, one who can’t.
test was 30 seconds (-t 30) download and upload (-R)
both users were on wired connections to their routers.

I basically have 2 users who can stream 4k and the rest can’t stream 1080p. only 2mbps 720p to be able to play without excessive buffering, and that’s ~5 people.

connections to the players are various most are wireless, almost certainly 2.4GHz, internet connections are various but >50mbps. But some are wired connections to players with >100mbps (advertised) internet.

every test I do shows it’s NOT my server, but at my friends house we watch 1080p youtube or netflix with ZERO buffering, we turn on my plex and it won’t even start playing for ~10 seconds of buffering for 1~2 seconds of video before buffering again

Believe me, I constantly tell my friends it’s THEIR problem not mine, but at the end of the day they can stream anything on nextflix, hulu, youtube, etc at max quality except my plex

If ONE user can stream 4K then it’s not your server and confirmed by iperf3 showing good results for all.

There are only two possibilities remaining:

  1. Their player device
  2. Their app settings in the player (more likely)

If you control the upload bit rate, they should:

  1. Subtitles = AUTOMATIC.
  2. Remote Quality = Original ( or whatever lower quality rate you want )
1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.