Các chế độ quản lý process của PHP-FPM
- pm = dynamic: tạo sẵn một số lượng process khởi đầu, sau đó tăng/giảm tùy theo tải. Đây là chế độ mặc định và phổ biến nhất.
- pm = static: cố định số process bằng
pm.max_children. Server luôn giữ nguyên số process, bất kể tải ít hay nhiều. - pm = ondemand: không tạo process sẵn. Chỉ khi có request mới spawn process và kill process khi rảnh rỗi một thời gian.
pm = dynamic
Chế độ dynamic hoạt động giống “auto scaling” ở mức process:
pm.start_servers: số process chạy sẵn ngay khi khởi động.pm.min_spare_servers: số process rảnh tối thiểu luôn giữ.pm.max_spare_servers: số process rảnh tối đa (nếu nhiều hơn thì sẽ bị kill bớt).
Ưu điểm:
- Cân bằng giữa hiệu năng và RAM, không lãng phí khi traffic thấp.
- Tự động mở rộng khi traffic tăng đột biến.
Nhược điểm: cần cấu hình hợp lý, nếu pm.max_children quá nhỏ → nghẽn; quá lớn → hết RAM.
pm = static
Chế độ static tạo đúng pm.max_children process và giữ nguyên. Đây là lựa chọn phù hợp khi bạn biết chắc traffic ổn định và có đủ RAM.
Ưu điểm:
- Dự đoán dễ, không có độ trễ khi spawn process mới.
- Ổn định cho site traffic cao và đều đặn.
Nhược điểm:
- Tốn RAM, kể cả khi site rảnh.
- Nếu set sai
max_children(quá thấp → nghẽn, quá cao → swap).
pm = ondemand
Ondemand chỉ tạo process khi có request. Khi không có request trong pm.process_idle_timeout thì process sẽ bị kill.
Ưu điểm:
- Tiết kiệm RAM tối đa khi site ít traffic.
- Hợp cho server nhỏ hoặc site ít truy cập.
Nhược điểm:
- Có độ trễ khi spawn process mới.
- Không phù hợp cho site nhiều request đồng thời, dễ nghẽn.
Site WordPress traffic cao: nên chọn chế độ nào?
- Dynamic: là lựa chọn an toàn và phổ biến. Bạn có thể tune
start_servers,min_spare_servers,max_spare_serversđể tối ưu RAM và tốc độ. Phù hợp cho hầu hết site WordPress vừa và lớn. - Static: tốt cho server chuyên dụng, traffic ổn định, RAM dồi dào. Lúc này bạn set
max_children= (RAM khả dụng / RAM trung bình mỗi process PHP). Đây là lựa chọn cho hệ thống enterprise. - Ondemand: không khuyến nghị cho site traffic cao. Nó phù hợp cho site nhỏ hoặc staging/dev, nơi RAM quý hơn tốc độ phản hồi.
Cách ước lượng pm.max_children
Mỗi process PHP-FPM tiêu thụ khoảng 30–60 MB RAM (tùy theme/plugin). Công thức đơn giản:
pm.max_children = Tổng RAM khả dụng cho PHP / RAM trung bình mỗi process
Ví dụ: server có 4 GB RAM, dành 2 GB cho PHP-FPM, mỗi process 40 MB → 2000 / 40 ≈ 50. Như vậy pm.max_children = 50.
Kết luận
Đối với site WordPress traffic cao:
- pm = dynamic là lựa chọn tối ưu và linh hoạt nhất.
- pm = static hợp cho server lớn, traffic đều, muốn loại bỏ độ trễ khi spawn process.
- pm = ondemand chỉ nên dùng cho site nhỏ, dev hoặc staging.
Tóm lại, hãy bắt đầu với dynamic, giám sát bằng công cụ như htop hoặc systemd-cgtop, và cân nhắc static nếu site của bạn đạt mức traffic enterprise ổn định. Đây là cách an toàn để đảm bảo WordPress luôn nhanh và server không bị quá tải.
Bình luận