Tháng Một 13, 2026Hướng dẫn
Cách cấu hình PHP-FPM để có hiệu suất tối ưu
Hướng dẫn đầy đủ về việc cấu hình cài đặt pool PHP-FPM, tinh chỉnh hiệu suất và tích hợp với Nginx.

PHP-FPM (FastCGI Process Manager) là một trình thực thi PHP FastCGI thay thế với các tính năng bổ sung hữu ích cho các trang web có lưu lượng truy cập cao. Cấu hình đúng cách có thể cải thiện đáng kể hiệu suất máy chủ và mức sử dụng tài nguyên của bạn.
Cài đặt PHP-FPM
bash
# Ubuntu/Debian
sudo apt update
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -y
# CentOS/RHEL
sudo yum install php-fpm php-mysql php-mbstring php-xml php-curl -y
# Khởi động và bật PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpmCấu hình Pool PHP-FPM
Chỉnh sửa tệp cấu hình pool để tối ưu hóa hiệu suất:
bash
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
# Các cài đặt chính:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
# Quản lý quy trình
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500Tinh chỉnh hiệu suất
Tối ưu hóa PHP-FPM cho tài nguyên máy chủ của bạn:
bash
# Tính toán max_children tối ưu:
# (Tổng RAM - Các dịch vụ khác) / (Bộ nhớ trên mỗi quy trình PHP)
# Ví dụ: (2GB - 500MB) / 50MB = 30 max_children
# Chỉnh sửa php.ini để có hiệu suất tốt hơn
sudo nano /etc/php/8.1/fpm/php.ini
# Các cài đặt được đề xuất:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
# Khởi động lại PHP-FPM
sudo systemctl restart php-fpmCấu hình Nginx
Cấu hình Nginx để làm việc với PHP-FPM:
bash
sudo nano /etc/nginx/sites-available/yourdomain.com
# Thêm xử lý PHP:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Kiểm tra và tải lại Nginx
sudo nginx -t
sudo systemctl reload nginxTheo dõi PHP-FPM
bash
# Kiểm tra trạng thái PHP-FPM
sudo systemctl status php-fpm
# Xem các quy trình PHP-FPM
ps aux | grep php-fpm
# Kiểm tra trạng thái pool (nếu trang trạng thái được bật)
curl http://localhost/status
# Xem nhật ký
sudo tail -f /var/log/php8.1-fpm.logMẹo tối ưu hóa PHP-FPM
- Điều chỉnh pm.max_children dựa trên RAM có sẵn
- Sử dụng pm = dynamic cho hầu hết các trường hợp sử dụng
- Thiết lập pm.max_requests để ngăn chặn rò rỉ bộ nhớ
- Bật opcache để có hiệu suất tốt hơn
- Thường xuyên theo dõi trạng thái PHP-FPM
- Sử dụng các pool riêng biệt cho các ứng dụng khác nhau
- Giữ PHP và PHP-FPM luôn được cập nhật