José Moreira

Tuning a small VPS: before and after

PHP-FPM, MariaDB and Apache got a weekend of attention. Some numbers, mostly flattering.

A dozen small sites on one VPS is fine until it isn’t. I spent a weekend on PHP-FPM pools, MariaDB buffers and switching off things nobody used.

Response times

Median response time per site (ms)Median response time per site (ms)0ms198ms396ms594ms792msBefore · home: 420msAfter · home: 140mshomeBefore · blog: 380msAfter · blog: 90msblogBefore · bets: 510msAfter · bets: 210msbetsBefore · mtg: 640msAfter · mtg: 260msmtgBefore · flicks: 720msAfter · flicks: 310msflicksBefore · snek: 300msAfter · snek: 120mssnekBeforeAfter
Placeholder numbers for layout testing.

Memory over a week

RAM used (GB)RAM used (GB)01234MonTueWedThuFriSatSunBefore · Mon: 3.4Before · Tue: 3.6Before · Wed: 3.7Before · Thu: 3.9Before · Fri: 3.8Before · Sat: 3.9Before · Sun: 3.9BeforeAfter · Mon: 2.1After · Tue: 2.2After · Wed: 2After · Thu: 2.3After · Fri: 2.2After · Sat: 2.1After · Sun: 2.2After

The settings that mattered

SettingBeforeAfter
pmdynamicondemand
pm.max_children508
innodb_buffer_pool_size128M512M
Mail serveronoff
Placeholder values.
; /etc/php/8.3/fpm/pool.d/site.conf
pm = ondemand
pm.max_children = 8
pm.process_idle_timeout = 10s
pm.max_requests = 500

The fastest service is the one you turned off.

Me, after disabling the mail server