Unable to stream remotely all the time

Hello, last month I moved to a new house in Asia and ever since I’ve been here I’ve been having a lot of difficulty getting high quality streams from my Plex server in the US. When I was living in the US I was able to consistently get 1080 or 720p streams without any issues.

Setup:

Server - Synology DS920+ with 20GB ram
Plex - Installed locally (no docker) Version 1.32.6.7557
Clients - Plex for Mac Version 1.79.1.3984-879339ed, Plex for iOS Version 8.26 (both on device and through Chromecast)
Remote house wifi - 60Mbps up/down
Asia cell service speeds at house - 100Mbps down, 25Mbps up
(NordVPN might cause a 10Mbps hit on these)
Server location wifi - 400Mbps down, 20Mbps up

Troubleshooting Steps Taken:

I have tried to stream on my Mac, iPhone local, and iPhone through Chromecast, both through my cell provider (with and without NordVPN on), and through my house wifi (with and without NordVPN on). I have also tried restarting the Plex package in the Synology Package Center along with several server restarts all with no luck.

My current bottleneck is the server upload speed at 20Mbps, but in the US this did not cause any issues if only one or two people were streaming 1080 or 720p at a time. But in Asia sometimes I am able to get a 720p stream going, but on some days the video constantly buffers even on 480p or less making any video effectively unplayable.

What is going on? When I look at the Plex dashboard the bandwidth is typically using less than 5Mbps, the Plex Media Server CPU usage will typically be below 20%, maybe 40% if it is transcoding with some background tasks, and the server RAM usage never goes above 50%, with Plex hardly touching it.

Please help!!

Server Version#: 1.32.6.7557
Player Version#: 1.79.1.3984-879339ed

Plex Media Server Logs_2023-10-22_05-30-45.zip (4.4 MB)

<If providing server logs please do NOT turn on verbose logging, only debug logging should be enabled>

When you do a speedtest, you are testing to the closest location, that doesn’t reflect the actual speed you could get for the whole trip to your target.

The longer the distance the slower the speed you get due to network congestion on multiple points on the road.

If you had your plex hosted in some data center then you probably have higher chance to get a better connection speed (or not as sometimes connections to DC are even more overloaded). But plex started to block whole DataCenters (like hetzner), so it’s probably not a good solution.


My guess for bad speeds would be:

  • ISP throttling/issues - as some have tricks that allow short speed burst but then throttle user to save bandwidth, or just have the connection between countries are very overloaded
  • high ping - as is might trick plex to drop to lower quality or just indicate throttling, or just due to high package drops it can’t reach full speed because the retransmission of data takes longer.
  • unstable speeds - it’s faster when you check, but slower when you have issues, but then speedup before you can do speedtest again

My suggestion would be to actually speedtest end-to-end to get the actual available speed between those locations (you can for example host your own speedtest like LibreSpeed next to plex), and/or track the ping time while watching the speed for any spikes (as that would indicate network speed issues).

That way you would know if it’s something in plex buffering logic getting f…up because of high ping, or actually the network speed is that bad.

If I may add here -

  1. The best way to measure point-to-point performance is with iperf3

  2. This Docker package has proven to be very stable and reliable
    https://hub.docker.com/r/networkstatic/iperf3
    – Create the container in “Host” networking mode
    – Port forward WAN 5201/TCP to the Syno
    – You want to set the -s option (server mode) in the launch command so it starts in server mode

  3. On the client (https://iperf.fr ), Test to the server in both directions
    – ( -R option is where the Syno server sends to the client )
    – Looks like this (Edit the IP address as required – IP or FQDN name)
    – (this is showing my home LAN from workstation to server)

[chuck@lizum ~.1996]$ iperf3 -c 192.168.0.20
Connecting to host 192.168.0.20, port 5201
[  5] local 192.168.0.13 port 34986 connected to 192.168.0.20 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.10 GBytes  9.42 Gbits/sec   76   1.49 MBytes       
[  5]   1.00-2.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.49 MBytes       
[  5]   2.00-3.00   sec  1.09 GBytes  9.41 Gbits/sec    0   1.49 MBytes       
[  5]   3.00-4.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.52 MBytes       
[  5]   4.00-5.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.52 MBytes       
[  5]   5.00-6.00   sec  1.09 GBytes  9.40 Gbits/sec    0   1.57 MBytes       
[  5]   6.00-7.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.63 MBytes       
[  5]   7.00-8.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.63 MBytes       
[  5]   8.00-9.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.84 MBytes       
[  5]   9.00-10.00  sec  1.10 GBytes  9.42 Gbits/sec    3   1.84 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  11.0 GBytes  9.41 Gbits/sec   79             sender
[  5]   0.00-10.04  sec  11.0 GBytes  9.37 Gbits/sec                  receiver

iperf Done.
[chuck@lizum ~.1997]$ 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 53040 connected to 192.168.0.20 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   1.00-2.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   2.00-3.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   3.00-4.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   4.00-5.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   5.00-6.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   6.00-7.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   7.00-8.00   sec  1.10 GBytes  9.41 Gbits/sec                  
[  5]   8.00-9.00   sec  1.10 GBytes  9.42 Gbits/sec                  
[  5]   9.00-10.00  sec  1.10 GBytes  9.41 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.04  sec  11.0 GBytes  9.38 Gbits/sec    1             sender
[  5]   0.00-10.00  sec  11.0 GBytes  9.41 Gbits/sec                  receiver

iperf Done.
[chuck@lizum ~.1998]$ 
  1. If longer durations are required. add the -t duration option (duration in seconds)

I had the same experience last summer when we went to Singapore and I tried to stream from my server located in Europe. Local speed tests in Singapore were super fast. The upload from my server is 50 mbs but when measuring direct peer to peer speed I could not get more than 6-8 mbs. I tried different things, including a VPN and couldn’t make it better. At the end I streamed at 720p/4mbs and even that had sporadic problems. Someone was throttling that long distance connection, no idea where exactly. It is not a Plex problem, just networking.

Thank you all for the advice! I think there is some sort of ISP throttling going on between my server and Asia. Sometimes when I connect to a US server through NordVPN my up/down speeds are slower than a local Asian NordVPN server BUT the server connection appears to be faster (more reliable 720p). This is just a guess from the posts here and some very unscientific troubleshooting.

I will try to setup the iPerf3 server in the near future to confirm and will report back. Got the client sides up and running via Homebrew on Mac and HE Network Tools on iOS, but will be a minute before I can add a new package to my compose file and test it. Thanks for the help!

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