大規模な同時実行と高負荷下での PHP-FPM パラメータのチューニング
主に Linux での PHP パラメータのチューニング
ファイル記述子の制限を調整
# ulimit -n 1000000
# vi /etc /security/limits.conf
# ファイル記述子のシェル制限を設定します
* Soft nofile 1000000
*hard nofile 1000000
PHP コードファイルが配置されているパーティションのファイルシステムアクセス時間の更新を禁止します
# vi /etc/fstab
たとえば、PHP コードが配置されているパーティション:
/dev/sdb1 ext4errors=remount-ro 0 1
は次のように変更されました:
/dev/ sdb1 ext4 noatime,nodiratime,errors=remount-ro 0 1
一時ファイルを tmpfs に保存
(注意点) Web サイトが大量の小さな画像のアップロードを処理する必要がある場合は、メモリ ファイル システムを使用しますtmpfs を使用して保存すると、一部の I/O オーバーヘッドが軽減されます。ただし、ユーザーが非常に大きなファイル (ビデオなど) をアップロードする場合、tmpfs の使用は適していません。 tmpfs tmpfs defaults,nosuid ,noatime 0 0
php.ini 設定チューニング
# vi php-app.ini
engine = On
expose_php = オフ
max_execution_time = 5
memory_limit = 256M
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = Off
display_startup_errors = Off
html_error s = オフ
default_socket_time out = 5
file_uploads = オン
upload_tmp_dir = /tmp /php
upload_max_filesize = 50M
post_max_size = 50M
max_file_uploads = 20
date.timezone = 'アジア/上海'
ここで設定されている max_execution_time は 5 秒だけであることに注意してください。高速な Web アプリケーションの場合、Web アプリケーション内で長時間実行される Web リクエストは望ましくありません。Web リクエストが 5 秒以上続く場合は、通常、ページが 300 ~ 500 ミリ秒以内に応答することを意味します。
PHP-FPM 構成のチューニング
# vi php-fpm.conf [my_app]
;FastCGI/PHP-FPM は UNIX ソケットを使用します
listen.backlog = 300
user = www
group = www
pm = Dynamic
;推定 pm.max_children = (MAX_MEMORY - 500MB) / 20MB
pm.max_children = 100
;最大のサイズに推奨pm %10 of .max_children
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 1000
pm.status_path = /php_status
request_terminate_timeout = 0
request_slowlog_timeout = 0
slowlog = /data/my_app/logs/slow.log
上記はこれらのパラメーターの概要です