| SYSTEM INFORMATION | |
|---|---|
| Debian 13.5 Trixie | Fresh net-ins with Virtualmin LAMP stack. |
| Virtualmin version | Web: 2.641 Virt: 8.1.0 GPL |
If I create a LAMP stack manually the PHP media scripts I am using work fine out of the box, even with stock apache and PHP configs (maybe adjusting max_file_size or something is needed for files over 8mb for example)
On a fresh install of Debian 13.5 and Virtualmin’s full LAMP stack, PHP upload speeds seem to take 70 seconds for a 14mb MP3 track. I have been ripping my hair out to find the culprit, even shoving the issue into GPT to see if it could help diagnose, which after about 10 re-installs and destroying php.ini’s, fpm configs, settings etc etc along the way. I have changed all the usual suspects like post times, file upload sizes etc, and they are loading fine when phpinfo is read, but still, doesn’t matter what the script is, something seems to be throttling the upload speeds.
I have never used Virtualmin/Webmin so im sure this is probably an easy fix or someone out there who has had a similar issue and can share with me what tickbox or php/fpm config I need to be editing. It is worth mentioning that this is on a Sub-Server, so the configs are independent from my understanding? SFTP speeds are fine it will upload in 7-8 seconds, so it seems to be a PHP/FPM/PROXY configuration issue or a deliberate limitation somewhere in the web panel…
Thanks in advance.
(This is what GPT said:)
Where the bottleneck actually is (now very clear)
At this point, all earlier suspects are eliminated:
disk (/tmp is tmpfs, fast)
ffmpeg
BeMusic logic
PHP limits
reqtimeout
Apache MPM
So the remaining real bottleneck is:
Apache → PHP-FPM upload streaming path (proxy_fcgi + buffering behavior)
But not in a “broken config” way — in a default conservative throughput mode.
Why Virtualmin makes this worse
Virtualmin + Apache + PHP-FPM typically introduces:
1. Buffered POST body handling
Apache does not stream directly into PHP-FPM sockets efficiently for large uploads.
Instead:
- chunk buffering
- temp file staging
- serialized transfer to PHP-FPM
This produces exactly:
~150–250 KB/s effective upload ceiling