curl -fsSL https://gist.githubusercontent.com/muuvmuuv/7b7a911ddec2172375b75498154ce5e8/raw/2d2bef245f9644dae10f8724f784f3424c4e30a2/php-pm.sh | sh
More here: https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning
curl -fsSL https://gist.githubusercontent.com/muuvmuuv/7b7a911ddec2172375b75498154ce5e8/raw/2d2bef245f9644dae10f8724f784f3424c4e30a2/php-pm.sh | sh
More here: https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning
#!/usr/bin/env sh | |
## | |
## Calculate optimized `pm` settings for php-fpm | |
## | |
clear | |
echo "" | |
cpu_cores=$(grep -c ^processor /proc/cpuinfo) | |
echo "Total Cores XX ${cpu_cores}" | |
memory_total_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}') | |
memory_total_mb=$(expr $memory_total_kb \/ 1000) | |
echo "Memory total MB ${memory_total_mb}" | |
memory_free_kb=$(grep MemFree /proc/meminfo | awk '{print $2}') | |
memory_free_mb=$(expr $memory_free_kb \/ 1000) | |
echo "Memory free MB ${memory_free_mb}" | |
memory_used_mb=$(expr $memory_total_mb \- $memory_free_mb) | |
echo "Memory used MB ${memory_used_mb}" | |
php_processes=$(ps -o pid,command ax | grep php | awk '{print $1}') | |
php_processes_count=$(echo "${php_processes}" | awk 'NR == 1 {} END {print NR}') | |
echo "PHP processes XX ${php_processes_count}" | |
php_processes_memory=$(echo "${php_processes}" | xargs -n1 -I {} sh -c "pmap {} | tail -n1 | awk '{print substr(\$2, 1, length(\$2)-1)}'") | |
average_php_memory_b=$(echo "${php_processes_memory}" | awk 'NR == 1 {sum=0} {sum+=$1;} END {print sum/NR}') | |
average_php_memory_mb=$(expr $average_php_memory_b \/ 10000) | |
echo "PHP average MB ${average_php_memory_mb}" | |
echo "" | |
max_children=$(expr $memory_free_mb \/ $average_php_memory_mb) | |
start_servers=$(expr $cpu_cores \* 4) | |
spare_servers=$(expr $cpu_cores \* 2) | |
echo "pm = dynamic" | |
echo "pm.process_idle_timeout = 6s" | |
echo "pm.max_children = ${max_children}" | |
echo "pm.start_servers = ${start_servers}" | |
echo "pm.min_spare_servers = ${spare_servers}" | |
echo "pm.max_spare_servers = ${start_servers}" | |
echo "" |