Note: I'm a paid Plex pass subscriber, and have the latest version of the Plex Media Server for Linux installed.
I've been using Plex for some time - since circa 2014 or so, I believe - and have had Plex working fine on a number of server setups. I now have a Plex instance located on a Ubuntu virtual server in a datacenter on a 1Gigabit pipe. It runs on 64-bit Ubuntu Linux under VMware vSphere 6.5 with eight (8) 2.1Ghz Intel Xeon CPU cores, 16GB of RAM, local 15k SAS virtual drives, all allocated to it. Its library is stored on a NFS mount in the same rack where it is able to random read & write at approximately 85+ MB/sec (800+ Mbps). Most of my previous setups were Plex running on a dedicated machine however this virtual machine is more powerful than any single machine a Plex server had run on in the past. It had run on Linux, Windows and OS X without much incident. Again, it has more than enough resources (one would imagine!)
However, when trying to stream media either via the web browse or Roku's Plex channel/application, I end up with my media getting paused and buffering ensuing. This happens quite frequently and happens whether or not the server is under any load, whether the virtual server running Linux and PMS (guest) or the ESXi hypervisor (host). This happens when trying to stream most media, including 200MB size MKV 1080p cartoon television shows! I might expect this from it having to stream and transcode (or, in case of fast forwarding, skip to random values) a large 8GB+ 1080p encoded Blu-Ray rip of a movie but a 200MB file? It can bring all of this into RAM for transcoding easily as it has 16GB available and tens of GB available on local disk, nevermind the NFS capable of reading and writing at 85+ megabytes per second (not Mbps, but MB/s).
I have had the media stream paused for about 10 minutes now yet the system load on the server for this 200MB file exceeds 9.0 (that is, the work of 9 processing cores) when the system is allocated just 8 cores, meaning CPU contention is quite high at the moment. I also have limited the maximum number of simultaenous transcoders to 4. There are 4 transcoders running for this single file even though as mentioned above it should be fully done processing by now as it's been paused. I know now if I were to unpause it, the entire 25 minute show would play through uninterrupted except perhaps in the last 3 or 4 minutes thanks to the pause and assumed pre-buffering.
As mentioned aboved the only way I've found to alleviate this is to pause the media being streamed via the client, whether my Roku to my TV or my web browser, and let it queue up a bit. But this only helps for a certain period of time, at which point I must pause it and let it sit paused, "marinating" as I like to call it, for several minutes.
My 'Advanced' settings for Plex Server include:
*) Maximum simultaneous video transcode: 4
*) Transcoder quality: Prefer higher-speed encoding
*) Transcoder default throttle buffer: 90 (seconds)
*) Background transcoding x264 preset: Super fast
*) Use hardware acceleration when available (not sure what hardware this means; newer CPU instruction sets, GPUs? It's running in a vSphere ESXi 6.5 guest VM w/ no GPU and a mid-2011 Xeon)
I have also set the maximum remote bitrate stream to 10Mbps (1080p), Secure Connections 'preferred', HTTP pipelining enabled, all hosts accessing the server are considered outside of the local LAN (so they are subject to remote settings), and in both the web and Roku clients I have set maximum bandwidth to 3 and 2Mbps, respectively, all in order to try and keep resource and network usage down.
Is there anything I'm missing that would cause this to choke so much? It's become pretty much unwatchable lest I either get some really poor quality encoded versions or I leave it paused for long periods of time.
Thank you!