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

  • Thursday 05/09/2024

Nếu server của bạn đang sử dụng môi trường PHP-FPM và website trên server không load được mặc dù tài nguyên server vẫn bình thường. Kiểm tra log báo lỗi sau:

php-fpm_h1

Với lỗi trên liên quan đến tham số: pm.max_children của php-fpm.

Tham số pm.max_children là gì?

Trong cấu hình PHP-FPM, thông số pm.max_children là một trong những cài đặt quan trọng giúp quản lý số lượng tiến trình PHP có thể chạy đồng thời trên máy chủ.

Cụ thể, pm.max_children xác định số lượng tối đa các tiến trình PHP có thể được khởi động cùng một lúc. Khi có yêu cầu đến máy chủ, PHP-FPM sẽ sử dụng một trong những tiến trình này để xử lý yêu cầu. Nếu tất cả các tiến trình hiện tại đều đang bận, yêu cầu mới sẽ phải chờ cho đến khi một tiến trình hiện có hoàn thành công việc và trở nên sẵn sàng để xử lý yêu cầu mới.

Điều chỉnh giá trị của pm.max_children phù hợp là rất quan trọng, vì nếu giá trị này quá thấp, số lượng yêu cầu có thể bị hạn chế và dẫn đến tình trạng chờ đợi hoặc giảm hiệu suất. Ngược lại, nếu giá trị này quá cao, có thể dẫn đến việc sử dụng quá nhiều tài nguyên hệ thống (như bộ nhớ và CPU), điều này có thể ảnh hưởng xấu đến hiệu suất của máy chủ hoặc các dịch vụ khác chạy trên cùng máy chủ.

Cấu hình tham số pm.max_children cho PHP-FPM

Với server bạn đang sử dụng phần mềm quản trị Directadmin bạn hiệu chỉnh cấu hình tại file đường dẫn:

/usr/local/directadmin/custombuild/configure/fpm/conf/

Tùy vào website đang sử dụng version php bao nhiêu bạn chỉnh php tương ứng. Ở đây tôi sử dụng php7.4 nên tôi sẽ cấu hình file: php-fpm.conf.74

nano /usr/local/directadmin/custombuild/configure/fpm/conf/php-fpm.conf.74

php-fpm_h2

  1. Để tính toán giá trị tối ưu cho tham số pm.max_children, bạn có thể dựa vào các yếu tố sau:
  2. Tài nguyên hệ thống: Xem xét tổng lượng bộ nhớ RAM và CPU mà máy chủ của bạn có.
  3. Tiêu thụ bộ nhớ của mỗi tiến trình: Đo lường lượng bộ nhớ mà mỗi tiến trình PHP tiêu tốn. Bạn có thể sử dụng các công cụ như top hoặc htop để theo dõi.
  4. Công thức tính toán: Sử dụng công thức sau để tính giá trị pm.max_children:

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

Ví dụ:

Giả sử bạn có 8 GB RAM và hệ điều hành cùng các dịch vụ khác sử dụng 2 GB, vì vậy bạn còn lại 6 GB cho PHP-FPM. Nếu mỗi tiến trình PHP tiêu tốn khoảng 50 MB bộ nhớ, tính toán sẽ như sau:

  • Tổng bộ nhớ khả dụng cho PHP-FPM: 6 GB = 6 x 1024 MB = 6144 MB
  • Bộ nhớ tiêu thụ của mỗi tiến trình PHP: 50 MB

\text{pm.max_children} = \frac{6144 \text{ MB}}{50 \text{ MB}} = 122.88

Bạn nên làm tròn số này xuống một chút để đảm bảo rằng bạn không tiêu tốn toàn bộ bộ nhớ khả dụng và để có không gian dự phòng cho các yếu tố không lường trước được.

Lưu ý:

  • Hiệu suất thực tế: Sau khi thiết lập pm.max_children, hãy theo dõi hiệu suất của máy chủ và điều chỉnh nếu cần thiết. Đảm bảo rằng máy chủ không bị quá tải hoặc không có vấn đề về bộ nhớ.
  • Thay đổi trong các điều kiện khác: Nếu máy chủ có nhiều dịch vụ hoặc các ứng dụng khác, hãy điều chỉnh giá trị của pm.max_children cho phù hợp với tình hình thực tế.

Bằng cách này, bạn có thể tối ưu hóa số lượng tiến trình PHP-FPM để đạt hiệu suất tốt nhất mà không làm ảnh hưởng đến tài nguyên hệ thống của bạn.

Sau khi set hoàn tất bạn cho lưu lại và restart lại service PHP-FPM với lệnh:

service php7.4-fpm restart

Như vậy bạn đã khắc phục được lỗi liên quan đến pm.max_children cho server.

 

Các bạn có thể tham khảo thêm các bài viết khác về tại đây

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng :
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Rate this post