Table of Contents
使用メモリを環境に合わせて最適化
自分の体感のみだが速度が改善できたと思う
使用可能なメモリ量の把握
# free -h
total used free shared buff/cache available
Mem: 7.4Gi 1.6Gi 171Mi 198Mi 5.7Gi 5.3Gi
Swap: 7.8Gi 225Mi 7.6Gi
※ free(171Mi) + buff/cache(5.7Gi) = 約5.8G
他のサービスも稼働させるので、使用メモリを4Gに確定
PHPプロセスが確保している平均メモリ量の把握
全てのfpmプロセスが確保したメモリ量は以下のコマンドで確認できる
# ps -ylC php-fpm --sort:rss
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 0 175380 1 0 80 0 50612 163890 - ? 00:00:00 php-fpm
S 48 176553 175380 0 80 0 93480 261392 - ? 00:00:03 php-fpm
S 48 176554 175380 0 80 0 95632 262707 - ? 00:00:03 php-fpm
S 48 175383 175380 0 80 0 99252 261922 - ? 00:00:04 php-fpm
S 48 176490 175380 0 80 0 100124 262167 - ? 00:00:03 php-fpm
S 48 175384 175380 0 80 0 112040 260907 - ? 00:00:05 php-fpm
S 48 175382 175380 0 80 0 116784 280897 - ? 00:00:04 php-fpm
S 48 175386 175380 0 80 0 119328 262413 - ? 00:00:04 php-fpm
S 48 175385 175380 0 80 0 120348 261765 - ? 00:00:04 php-fpm
S 48 175794 175380 0 80 0 125056 262724 - ? 00:00:05 php-fpm
S 48 176533 175380 0 80 0 139308 273728 - ? 00:00:03 php-fpm
S 48 176561 175380 0 80 0 155964 274322 - ? 00:00:03 php-fpm
この平均を以下のコマンドで計算する
# ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
108M
余裕をみて、125M
適切な設定値を計算
pm.max_children = 使用可能メモリ量 / プロセスの平均メモリ使用量
pm.start_servers = [25% of max_children]
pm.min_spare_servers = [25% of max_children]
pm.max_spare_servers = [75% of max_children]
pm.max_children = (4G * 1024) / 125M = 32.759 = 32
pm.start_servers = 32 × 0.25 = 8 = 8
pm.min_spare_servers = 32 × 0.25 = 8 = 8
pm.max_spare_servers = 32 × 0.75 = 24 = 24
# vi /etc/php-fpm.d/www.conf
----------------------------------------
[www]
pm.max_children = 32
pm.start_servers = 8
pm.min_spare_servers = 8
pm.max_spare_servers = 24
----------------------------------------