No. RAM, CPU and process-size figures are processed entirely in your browser with JavaScript. Nothing is sent to, or stored on, our servers — safe to use even for client machines.
Work out pm.max_children, innodb_buffer_pool_size and nginx or Apache worker settings from your server's RAM — with ready-to-paste config snippets. No server access needed, nothing uploaded: the maths runs entirely in your browser.
Total RAM, CPU cores and your average PHP-FPM process size — presets for common VPS sizes included.
WordPress, WooCommerce, general PHP or database-heavy — the calculator splits RAM between PHP and MySQL accordingly.
pm.max_children, pm.* spares, innodb_buffer_pool_size, log file size and web server workers — computed live as you type.
Copy ready-to-paste snippets for your pool config, my.cnf and nginx/Apache, or export everything as TXT/JSON. Zero uploads.
Not sure of your average PHP-FPM process size? Run ps --no-headers -o "rss,cmd" -C php-fpm | awk '{s+=$1; n++} END {printf "%.0f MB", s/n/1024}' on your server, or start with 40 MB and watch pm.status_path.
These are the same rules of thumb a sysadmin applies by hand — the calculator just does them consistently and shows its work. Always load-test after applying changes.
| Setting | Formula / rationale |
|---|---|
| PHP-FPM RAM share | Workload profiles allocate RAM: WordPress 55% to PHP / 35% to MySQL, WooCommerce 50/40 (bigger DB), DB-heavy 40/55, static 65/25. The OS/services keep the remainder (~10%). |
| pm.max_children | floor(PHP RAM ÷ average process size). The single most important FPM setting: too high causes swap-death, too low causes 502/504 errors under load. |
| pm.start/min/max_spare_servers | Dynamic pool sizing: start ≈ 25% of max_children, min_spare ≈ 10%, max_spare ≈ 35% (all capped at max_children). |
| innodb_buffer_pool_size | ~70% of the MySQL RAM share. This is the most important MySQL setting — it caches data and indexes in memory. |
| innodb_log_file_size | 25% of the buffer pool, clamped between 128 MB and 1 GB per file (rule: large enough to absorb an hour of writes). |
| innodb_buffer_pool_instances | Buffer pool ≥ 1 GB → one instance per GB, max 8. Reduces internal mutex contention. |
| nginx workers | worker_processes = CPU cores; worker_connections 1024 per worker. Max clients ≈ cores × 1024 (keepalive × 0.75 as a practical figure). |
| Apache (mpm_event + proxy) | MaxRequestWorkers aligned with pm.max_children — Apache threads mostly wait on FPM, so a 1:1 match avoids queueing. |
| memory_limit / upload sizes | php.ini memory_limit 256 MB (WooCommerce 512 MB), post_max_size and upload_max_filesize aligned at 64 MB. |
| Swap guidance | 1–2 GB of swap on small VPS as an emergency buffer — but if you regularly see swap-in during traffic peaks, you need more RAM, not more tuning. |
No. RAM, CPU and process-size figures are processed entirely in your browser with JavaScript. Nothing is sent to, or stored on, our servers — safe to use even for client machines.
It is the hard cap on simultaneous PHP processes. Set it above what your RAM can hold and the server swaps to disk — everything slows down at once. Set it too low and visitors get 502/504 errors during traffic spikes. Sizing it from real RAM and real process sizes is the only reliable method.
Measure it, don't guess: the ps command shown above the calculator averages the resident set size of your live php-fpm workers. WordPress sites typically run 30–60 MB per worker; WooCommerce or heavy plugins can hit 80–120 MB.
They are solid, conservative starting points based on standard sysadmin practice. Apply them, then watch your monitoring: FPM status page, MySQL uptime with slow-query log, and swap usage under real load. Tune upward only with evidence.
Tuning can only stretch the RAM you have. If swap-in continues during normal traffic, you have genuinely outgrown the plan — a VPS upgrade is the honest fix. Systron's managed NVMe VPS plans scale RAM without reinstalling.