Cấu hình tối ưu pm.max_children cho PHP-FPM


Vào 1 ngày  đẹp trời hay mưa gì đó, bỗng nhiên server của bạn chạy ì ạch. Bạn vào kiểm tra log và vô tình phát hiện ra có quá nhiều truy cập request tới server của bạn. Dưới đây là log của PHP-FPM được lưu tại tại: /var/log/php7.4-fpm.log

[25-May-2021 23:37:39] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 3 idle, and 37 total children
[25-May-2021 23:37:42] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 6 idle, and 44 total children
[25-May-2021 23:37:48] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it

Nó báo hiện cho bạn rằng server của bạn quá bận rộn đã đến lúc bạn cần cấu hình lại để tối ưu cho dịch vụ PHP-FPM của bạn.

Cấu hình tối ưu pm.max_children cho PHP-FPM (Version 7.4)

Chúng ta cần sửa file config của PHP-FPM tại đường dẫn: /etc/php/7.4/fpm/pool.d/www.conf

Và thiết lập các thống số sau:

[php-fpm-pool-settings]
pm = dynamic
pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

Vậy đâu ra các con số này? Chúng ta tính dựa vào công thức sau:

pm.max_children = Total RAM dedicated to the web server / Max child process size

Dịch nôm na là:

pm.max_children = Tổng RAM của Server / RAM sử dụng cho mỗi PHP-FPM process

Để tính số RAM sử dụng bởi mỗi 1 php-fpm child process

ps --no-headers -o "rss,cmd" -C php-fpm7.4 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

Cấu hình tối ưu pm.start_servers cho PHP-FPM

Các tham số khác như doc của PHP-FPM

Sau đó lưu lại file và restart lại dịch vụ php-fpm

sudo systemctl restart php7.4-fpm

 

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web