Skip to content

Instantly share code, notes, and snippets.

@muuvmuuv
Last active August 7, 2023 16:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save muuvmuuv/7b7a911ddec2172375b75498154ce5e8 to your computer and use it in GitHub Desktop.
Save muuvmuuv/7b7a911ddec2172375b75498154ce5e8 to your computer and use it in GitHub Desktop.
Get optimized PHP-fpm "pm" config
#!/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 "sudo 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 ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment