Hi,
I’m new to sharing my Plex server and so far have tried with my daughter using a Raspberry Pi2/B running Plex for Kodi, and with my brother using the web client on a Windows 7 HTPC.
My internet connection is 75 Mbps download, 10 Mbps upload. I’ve just upgraded my server with an i3-7320 CPU which has a Single Stream rating of 2,407.
My daughter was able to scroll through my videos but unable to play anything. An error message something like ‘unable to play video’ came up, we left it at that for now; she doesn’t have time to mess around with this.
Then I tried my brother who has a 25 Mbps download internet connection. He was able to watch videos but with quite a bit of buffering. I originally set my Remote Access->Internet upload speed to 10 Mbps and Limit remote stream bitrate to 10 Mbps (1080p). Even when I dropped the Internet upload speed to 8 Mbps and remote stream bitrate to 4 Mpbs (720p) there was still buffering.
The first video we tried was an MP4 with an overall bit rate of 1,702 kb/s, bit rate mode variable. This was Direct Played on his HTPC, but with buffering. The next video was an MKV with an Overall bit rate = 4,999 kb/s, bit rate mode Variable. The video was transcoded but my CPU was rarely over 6% while transcoding. My guess is it was transcoded because it couldn’t be played natively on his HTPC.
I thought by limiting the Internet upload speed & remote stream bitrate, that Plex would transcode even a video which is normally Direct Played, because he’d reduce the bitrate on the fly in order to honor the limits set. But apparently that wasn’t happening. Or was it?
I could put Debug mode on and send up some logs and try again with my brother. Would that be helpful? Or am I missing something in how to reduce or eliminate buffering?
Thanks,
Mark M
That CPU has a passmark rating of 6900+. (https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i3-7320+%40+4.10GHz&id=2941) This could handle as many as 3 transcodes of 1080p 8Mbps at a time.
The settings that affect this on your end are: Web App -> Settings -> Server -> Remote Access -> “Internet upload speed” and “Limit remote stream bitrate”. I see you said you had it to 10Mbps, but that is your MAX speed, so you really need to set that to about 80% or so, to count for overhead, your downloading, etc. That’s the whole pipe, so if you are doing something on your connection the whole pipe isn’t available to Plex… Your activity is taking up part of it. (Which is why the client is buffering a 10Mbps stream.)
If you want 2 or 3 people to stream at a time, you need to take 80% of 10Mbps (or 8Mbps) and divide that by the number of remote streams to come up with the Limit Remote stream bitrate number for each individual stream. (In this case, 2Mbps, 480p to 3Mbps, 720p.) Next you need to set the transcode limits to reflect that you are going to allow 2 or 3 transcodes potentially, so Web App -> Settings -> Server -> Transcode “Maximum simultaneous video transcode” to 2 or 3 (although I would go with 4, just in case local devices needed to transcode. just in case… Even if the hardware might have some issues with this.)
Once these settings are set on the server end, it doesn’t matter what the client settings are set to. They only get what the server will hand off to them, and you limited it to say 3Mbps 720p.
It’s also possible that you have other issues in the wire between you and the remote devices. Any of the hops between could be slow, or the ISP’s involved might be throttling the port. This is going to have a huge impact as well. Try making the changes you CAN make and test, then report back if you still have problems.
EDIT: Re-reading your post I’m inclined to think that the ISP might be throttling port 32400. So you can try manually specifying a port in the PMS settings and then forward the specified port on your router.
Hi MikeG6.5
Thanks for your response.
@MikeG6.5 said:
That CPU has a passmark rating of 6900+.
According to Otto, the important factor for Plex is the Single Thread rating. Either way, I’m more than covered for a single user.
The settings that affect this on your end are: Web App → Settings → Server → Remote Access → “Internet upload speed” and “Limit remote stream bitrate”. I see you said you had it to 10Mbps, but that is your MAX speed, so you really need to set that to about 80% or so, to count for overhead, your downloading, etc.
According to the Getting Started Guide on bandwidth, Plex automatically adjusts the selected amount to 80%.
https://support.plex.tv/hc/en-us/articles/227715247-Server-Settings-Bandwidth-and-Transcoding-Limits
I was doing nothing on my end while testing. Also I said that I dropped Internet upload speed to 8 Mbps & Limit remote stream bitrate to 4 Mbps (720p) with no joy.
If you want 2 or 3 people to stream at a time
I don’t. I plan on only having my daughter as a user, my brother was just for testing. I’ve also set up a Raspberry Pi2/B for her, which Direct Plays both MKV and MP4s. So as far as the client goes, there won’t be any video transcoding required. I was hoping that Plex would transcode in order to limit bitrate but that’s not happening, I don’t know why. The whole point of upgrading my CPU was to handle the expected transcoding for bitrate limits. Am I not getting how Plex works to limit bitrate?
Once these settings are set on the server end, it doesn’t matter what the client settings are set to. They only get what the server will hand off to them, and you limited it to say 3Mbps 720p.
4 Mbps 720p with no help.
It’s also possible that you have other issues in the wire between you and the remote devices. Any of the hops between could be slow, or the ISP’s involved might be throttling the port. This is going to have a huge impact as well. Try making the changes you CAN make and test, then report back if you still have problems.
http://speedtest.xfinity.com never shows less than 11.8 Mbps upload (and 90.1 Mbps download). But of course over time I suppose there could be hiccups. I imagined that Plex would buffer at the client to handle hiccups, but that’s just my imagination. All the settings you’ve mentioned were already set as you suggested. So yes I’m still having problems.
EDIT: Re-reading your post I’m inclined to think that the ISP might be throttling port 32400. So you can try manually specifying a port in the PMS settings and then forward the specified port on your router.
Ah! That’s interesting!! I will experiment with that. Does anyone have experience with Xfinity/Comcast throttling uploads?
@markmarz said:
According to Otto, the important factor for Plex is the Single Thread rating. Either way, I’m more than covered for a single user.
Please don’t oversimplify 
This is only the case when we are bringing PGS/VOB subtitles and /or the VC-1 video codec into play.
Is your server wired up to your router or are you using WiFi?
What other services are you using over the internet which may be consuming bandwidth?
Are your remote clients very far away?
Are you using different Internet service providers?
Could you measure the round-trip delay time between your network and that of your brother’s?
@OttoKerner said:
@markmarz said:
According to Otto, the important factor for Plex is the Single Thread rating. Either way, I’m more than covered for a single user.
Please don’t oversimplify 
This is only the case when we are bringing PGS/VOB subtitles and /or the VC-1 video codec into play.
Huh? I didn’t mean to oversimplify. This is what I gathered … apparently incorrectly … from our conversation here:
https://forums.plex.tv/discussion/comment/1344640#Comment_1344640
@markmarz said:
Huh? I didn’t mean to oversimplify. This is what I gathered … apparently incorrectly … from our conversation here:
Yes, I did not explicitly state it there. I assumed you already have done your research since you explicitly cited the single thread performance in that thread (which is still quite rare among users.
)
@OttoKerner said:
@markmarz said:
Huh? I didn’t mean to oversimplify. This is what I gathered … apparently incorrectly … from our conversation here:
Yes, I did not explicitly state it there. I assumed you already have done your research since you explicitly cited the single thread performance in that thread (which is still quite rare among users.
)
I don’t want to divert this discussion, but now I have to know. Are you saying that this CPU is not a good choice for my use case?
Anyway, the CPU usage is really low. In fact, I wish it were higher, then I’d at least have a clue that Plex was getting involved and transcoding the video to reduce the bitrate in order to meet the bandwidth limits I’ve set. That’s the part I’d really like an answer to: if I don’t understand how Plex reacts to the bandwidth limits, then how does it work?
@OttoKerner said:
@markmarz said:
Is your server wired up to your router or are you using WiFi?
No WiFi is being used anywhere along the line, at my end or my brother’s.
What other services are you using over the internet which may be consuming bandwidth?
None.
Are your remote clients very far away?
2,000 miles.
Are you using different Internet service providers?
Probably. If this mattered, then I expect there’s a whole lot of unhappy Plex Friends.
Could you measure the round-trip delay time between your network and that of your brother’s?
If I knew how. Can you tell me?
I’m leaning towards the idea @MikeG6.5 broached, that possibly Comcast is throttling port 32400. Unfortunately I have an Arris TG862G-CT Gateway/Modem which is very difficult (for me) to set up Port Forwarding on. What I mean is, I’ve looked at various guides on YouTube and although they tell you exactly what to do, it’s really just opening a new port, not port forwarding as I’ve thought of it and with no apparent overlap with the instructions given here:
https://support.plex.tv/hc/en-us/articles/200931138-Troubleshooting-myPlex-Server-connections
… under Manual Port Forward for a Single Server.
I’ve added a ‘service’ in the Port Forwarding section of the Gateway configuration, for port 20001, and then assigned 20001 as the manually specified public port in Remote Settings. When I first Apply that port, I get a message that my server is fully accessible outside the network. But when I revisit the page to check, I see 'Not available outside your network. Your server is signed in to Plex, but is not reachable from outside your network. '.
When my brother then tries to access my server, he’s told it can’t be reached directly so an indirect connection is established. Which I interpret to mean Port Forwarding has not been set up correctly. He has no buffering issues so far, but from what I’ve read he’s only getting 2 Mbps from the Relay. Not the way I want to go.
So … if anyone has experience in setting up Port Forwarding & Plex with the Arris, please chime in!
Thanks,
Mark
@markmarz said:
I don’t want to divert this discussion, but now I have to know. Are you saying that this CPU is not a good choice for my use case?
Nothing I stand by what I said in the other thread. Your cpu is well suited for Plex.
See my edits above.
@markmarz said:
@OttoKerner said:
Could you measure the round-trip delay time between your network and that of your brother’s?
If I knew how. Can you tell me?
There are tools. Which depends on your operating system.
(But this is not really relevant if you are using Relay)
I’m leaning towards the idea @MikeG6.5 broached, that possibly Comcast is throttling port 32400. Unfortunately I have an Arris TG862G-CT Gateway/Modem which is very difficult (for me) to set up Port Forwarding on. What I mean is, I’ve looked at various guides on YouTube and although they tell you exactly what to do, it’s really just opening a new port, not port forwarding as I’ve thought of it and with no apparent overlap with the instructions given here:
https://support.plex.tv/hc/en-us/articles/200931138-Troubleshooting-myPlex-Server-connections
… under Manual Port Forward for a Single Server.
I’ve added a ‘service’ in the Port Forwarding section of the Gateway configuration, for port 20001, and then assigned 20001 as the manually specified public port in Remote Settings. When I first Apply that port, I get a message that my server is fully accessible outside the network. But when I revisit the page to check, I see 'Not available outside your network. Your server is signed in to Plex, but is not reachable from outside your network. '.
When my brother then tries to access my server, he’s told it can’t be reached directly so an indirect connection is established. Which I interpret to mean Port Forwarding has not been set up correctly. He has no buffering issues so far, but from what I’ve read he’s only getting 2 Mbps from the Relay. Not the way I want to go.
So … if anyone has experience in setting up Port Forwarding & Plex with the Arris, please chime in!
Yes, this might be what is needed now.
Unfortunately, I don’t know this modem either.
You know, all signs point to Relay being used. And yet my brother says the picture quality is excellent and there’s only a little buffering when the video is first started. I asked him to try a high bitrate video, which I figured would look bad if it were truly limited to 2 Mbps and it looks great to him. He can make out the individual stubble on a recently shaved chin. hah-hah!
So perhaps the 2 Mbps limit for the Relay is pessimistic.
Anyway, I’ve got to get Port Forwarding working. Either the Relay has reduced the bitrate to the point that buffering goes away, or I really am Port Forwarding correctly (and so getting past Comcast throttling 32400) and the messages to the contrary are wrong. I doubt the latter.
@markmarz said:
You know, all signs point to Relay being used. And yet my brother says the picture quality is excellent and there’s only a little buffering when the video is first started. I asked him to try a high bitrate video, which I figured would look bad if it were truly limited to 2 Mbps and it looks great to him. He can make out the individual stubble on a recently shaved chin. hah-hah!
So perhaps the 2 Mbps limit for the Relay is pessimistic.
Anyway, I’ve got to get Port Forwarding working. Either the Relay has reduced the bitrate to the point that buffering goes away, or I really am Port Forwarding correctly (and so getting past Comcast throttling 32400) and the messages to to the contrary are wrong. I doubt the latter.
ISPs are smart. They need to get around FCC regulations which AFAIK still demand some kind of net-neutrality. If they throttle, they probably do it dynamically, mostly depending on the overall load on their network. Which means throttling is most likely to occur during ‘prime time’ when people are at home and are sitting down to watch tv or some ‘cat content’ on the interwebs.
@OttoKerner said:
ISPs are smart. They need to get around FCC regulations which AFAIK still demand some kind of net-neutrality. If they throttle, they probably do it dynamically, mostly depending on the overall load on their network. Which means throttling is most likely to occur during ‘prime time’ …
I’m sure that’s true. But yesterday we tested at about the same time during the day (now). Then I was using port 32400. Today I’m screwing around with … and I really mean screwing around … Port Forwarding and so then the whole Relay issue is raised. I don’t know.
I’d still like to know why Plex isn’t transcoding the video to respect the bandwidth limits I’ve set. Or maybe as far as he’s concerned, I haven’t reached the limit even though there’s heavy buffering. But when I set the remote stream bitrate to 4 Mpbs 720p there was still buffering and very low CPU usage. Mystery on top of mystery.
This is the default port set up for Remote access to my server. Would it matter if Comcast is throttling 32400 anyway? Isn’t 28477 the port that is exposed to the outside world?
@markmarz said:
I’d still like to know why Plex isn’t transcoding the video
How do you know it is not transcoding?
Take a look at Status - NowPlaying to get detail info
Or maybe as far as he’s concerned, I haven’t reached the limit even though there’s heavy buffering. But when I set the remote stream bitrate to 4 Mpbs 720p there was still buffering and very low CPU usage. Mystery on top of mystery.
Buffering not only occurs because of low available bandwidth.
Often, the roundtrip delay time is the limiting factor. When a file is transcoded and played, it is chopped into little packets. All of these packets get transferred individually over the network. When you have a particularly long roundtrip delay, the ‘acknowledge’ packets travel with too much of a delay, so the folllowing packets are sent too late by the server.
Although geographic distance is a factor as well,
a long roundtrip delay occurs often when traffic has to cross several ISPs networks. It very much depends on the interconnectivity of the involved ISPs and whether they have direct peering agreements with each other or are using intermediate network of other ISPs.
Each network ‘hop’ adds to the roundtrip delay.
These circumstances are the reason why professional video providers (Netflix. Hulu, Youtube…) have their content mirrored to several datacenters over the world.
When you play something from them, you are being (unnoticed) redirected to the datacenter which is suited best to achieve the lowest count of hops and the ‘shortest’ route to you .
A private person running Plex cannot do something like that.
@markmarz said:
This is the default port set up for Remote access to my server. Would it matter if Comcast is throttling 32400 anyway? Isn’t 28477 the port that is exposed to the outside world?
Yes, in this case your ISP only sees traffic on port 28477, not on 32400.
Though you cannot rule out that they by now have developed a way to identify Plex traffic by other means than the port number.
@OttoKerner said:
@markmarz said:
I’d still like to know why Plex isn’t transcoding the video
How do you know it is not transcoding?
2 ways: Status - Now Playing & PlexPy.
Another indication, though not definitive, is very low CPU usage. Before I upgraded my CPU, if I tried to play an MKV on a client that didn’t natively support it … like the web client … the CPU would spike to 100% and the video couldn’t be played because the server wasn’t strong enough. That never happens now.
@OttoKerner said:
@markmarz said:
This is the default port set up for Remote access to my server. Would it matter if Comcast is throttling 32400 anyway? Isn’t 28477 the port that is exposed to the outside world?
Yes, in this case your ISP only sees traffic on port 28477, not on 32400.
So doesn’t this make the whole throttling discussion around 32400 moot?
@markmarz said:
So doesn’t this make the whole throttling discussion around 32400 moot?
No.
https://forums.plex.tv/discussion/comment/1376675/#Comment_1376675
You cannot rule out that they by now have developed a way to identify Plex traffic by other means than the port number.
@OttoKerner said:
@markmarz said:
I’d still like to know why Plex isn’t transcoding the video
How do you know it is not transcoding?
Take a look at Status - NowPlaying to get detail info
Or maybe as far as he’s concerned, I haven’t reached the limit even though there’s heavy buffering. But when I set the remote stream bitrate to 4 Mpbs 720p there was still buffering and very low CPU usage. Mystery on top of mystery.
Buffering not only occurs because of low available bandwidth.
Often, the roundtrip delay time is the limiting factor. When a file is transcoded and played, it is chopped into little packets. All of these packets get transferred individually over the network. When you have a particularly long roundtrip delay, the ‘acknowledge’ packets travel with too much of a delay, so the folllowing packets are sent too late by the server.
Although geographic distance is a factor as well,
a long roundtrip delay occurs often when traffic has to cross several ISPs networks. It very much depends on the interconnectivity of the involved ISPs and whether they have direct peering agreements with each other or are using intermediate network of other ISPs.
Each network ‘hop’ adds to the roundtrip delay.
These circumstances are the reason why professional video providers (Netflix. Hulu, Youtube…) have their content mirrored to several datacenters over the world.
When you play something from them, you are being (unnoticed) redirected to the datacenter which is suited best to achieve the lowest count of hops and the ‘shortest’ route to you .
A private person running Plex cannot do something like that.
This is all extremely interesting and informative, thank you Otto.
But then it seems to me it’s the luck of the draw whether remote Plex users are going to have a good experience - that is without buffering and high picture qualify. Maybe I have to set my bandwidth limits so low as to render poor video quality to avoid buffering. Doesn’t sound like I have any more options.