Lưu trữ thẻ: #php

Hướng dẫn cấu hình tối ưu PHP-FPM

I. PHP-FPM là gì

PHP-FPM (FastCGI Process Manager) là một trình quản lý PHP thay thế cho FastCGI, với các tính năng bổ sung để có thể tối ưu cho các website có lượng truy cập lớn. Ưu điểm chính của PHP-FPM là nó sử dụng ít tài nguyên hơn so với bất kỳ giải pháp chạy PHP nào khác, qua đó quản lý hiệu quả tài nguyên và giúp tăng tốc website.

Trong nhiều trường hợp, việc tối ưu không tốt PHP-FPM không tốt có thể khiến server bị giới hạn khả năng chịu tải, trong khi vẫn dư thừa tài nguyên. Cụ thể hơn, Quý khách có thể thấy xuất hiện những lỗi như sau trong error log của PHP-FPM:

[05-Feb-2020 08:28:31] WARNING: [pool www] server reached pm.max_children setting (10), consider raising it
[05-Feb-2020 08:28:31] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 0 idle, and 9 total children

Thông báo này có nghĩa là PHP-FPM đang bận và không thể xử lý lưu lượng truy cập cao với các tham số cấu hình hiện có.

PHP-FPM có thể dẫn đến quá tải máy chủ do nhiều lý do:

  • Quá nhiều tiến tình chạy do lưu lượng truy cập cao hoặc bị tấn công
  • Cấu hình PHP-FPM không được tối ưu so với tài nguyên của máy chủ

II. Tối ưu PHP-FPM

  1. Thông số máy chủ

    • Đầu tiên, hãy xác định lại thông số máy chủ của bạn. Số core CPU và kích thước bộ nhớ RAM hiện có của server, lượng tài nguyên sẽ sử dụng cho PHP-FPM.
    • Ví dụ: giả sử bạn có 4vCPU và RAM 16 GB
      Trong bài viết này, chúng tôi sẽ sử dụng 10 GB RAM để phân bổ cho hoạt động PHP.
  2. Tính dung lượng RAM tiêu thụ của mỗi tiến trình PHP-FPM

    • Thực thi lệnh sau để kiểm tra dung lượng RAM mà mỗi tiến trình PHP-FPM đang sử dụng.
      ps -ylC php-fpm7.3 --sort:rss

      Thay thế với đúng tên phiên bản PHP đang sử dụng.

    • Kết quả nhận được sẽ giống như bên dưới:
      S UID PID  PPID C PRI NI RSS    SZ     WCHAN TTY TIME      CMD 
      S 0   9030 1    0 80  0  31244  120002 -     ?   00:00:05  php-fpm7.3 
      S 33  7511 9030 1 80  0  130636 148827 -     ?   00:00:04  php-fpm7.3 
      S 33  7479 9030 2 80  0  133724 150336 -     ?   00:00:16  php-fpm7.3 
      S 33  7504 9030 2 80  0  136272 150365 -     ?   00:00:08  php-fpm7.3
    • Hãy lưu ý các giá trị bên dưới cột RSS. Đây là bộ nhớ được sử dụng bởi mỗi tiến trình PHP-FPM của bạn. Như trên, chúng ta có trung bình khoản 150 MB RAM được sử dụng cho mỗi tiến trình con PHP-FPM.
  3. Cấu hình PHP-FPM

    • File cấu hình PHP-FPM
      /etc/php/7.3/fpm/pool.d/www.conf

      Đường dẫn có thể sẽ khác tùy thuộc vào phiên bản php. Có 4 giá trị chúng ta cần lưu ý khi cấu hình php-fpm, bao gồm:

      • pm.max_children
      • pm.start_servers
      • pm.min_spare_servers
      • pm.max_spare_servers
    • pm.max_children
      Giá trị max_children nên được tính bằng cách lấy tổng dung lượng bộ nhớ RAM sử dụng cho PHP-FPM chia cho dung lượng ram tiêu thụ trung bình cho mỗi tiến trình PHP-FPM (2).
      Ví dụ: trong bài hướng dẫn này, chúng ta có 10 GB RAM (10000 MB) phân bổ cho mỗi tiến trình 150 MB, nên:

       pm.max_children = 10000 / 150 ~ 67
    • pm.start_servers
      Giá trị start_servers nên được tính bằng cách lấy số core CPU nhân với 4.
      Ví dụ: trong hướng dẫn này, số core của server là 4, nên:

      pm.start_servers = 4 x 4 = 16
    • pm.min_spare_servers
      Giá trị min_spare_servers nên được tính bằng cách lấy số core CPU nhân với 2.
      Ví dụ:  trong môi trường hướng dẫn này:

      pm.min_spare_servers = 4 x 2 = 8
    • pm.max_spare_servers
      Giá trị max_spare_servers cũng nên được tính bằng lấy số lượng core CPU nhân với 4.
      Ví dụ: trong môi trường bài hướng dẫn này:

      pm.max_spare_servers = 4 x 4 = 16
    • Chúng ta được kết quả cuối cùng:
      pm.max_children = 67 
      pm.min_spare_servers = 8 
      pm.max_spare_servers = 16 
      pm.start_servers = 16
  4. Lưu lại và khởi động lại dịch vụ  PHP-FPM:
    sudo service php7.3-fpm restart

Như vậy Long Vân đã hướng dẫn Quý khách cách tối ưu cho PHP-FPM. Chúc Quý khách thành công.

Hướng dẫn cách thêm PHP Extension trên hosting cPanel

Khi sử dụng PHP trên hosting cPanel, mỗi source web PHP sẽ có yêu cầu nhiều extention khác nhau để hoạt động hoặc tối việc tốc độ của website. Dưới đây là hướng dẫn thêm extention trên hosting cPanel.

  1. Truy cập vào cPanel với thông tin user đã được cung cấp.

  2. Chọn Select PHP version.
    • Trình quản lí cPanel -> Software -> Select PHP version ( hoặc Search “Select PHP version” ở thanh Search Tools (/) góc trên bên phải và click chọn).
    • Xác định PHP của domain đang chạy để chọn phiên bản PHP và extendtion cho PHP mà bạn muốn. Click chọn vào extention mong muốn, Cpanel sẽ hoàn toàn tự động cài đặt.

Như vậy Long Vân đã hướng dẫn Quý khách cách thêm extention PHP trên Cpanel. Chúc các bạn thành công.

Hướng dẫn cài đặt LAMP trên Ubuntu 22.04

LAMP viết tắt của Linux OS, Apache HTTP Server, MySQL/MariaDB/MongoDB, php, perl hoặc python được sử dụng để tạo các trang web động.

Các thành phần này đều là phần mềm mã nguồn mở và miễn phí, phù hợp để xây dựng các trang web động hoặc các ứng dụng web khác và là nền tảng được sử dụng ưa chuộng trên Internet hiện nay.

Cài đặt LAMP có thể cài đặt từng bước hoặc cài đặt theo một lệnh duy nhất

$ sudo apt install apache2 php php-mysql mysql-client mysql-server

Sau khi quá trình cài đặt hoàn tất máy chủ sẽ hỏi bản có muốn khởi động lại hạt nhân(kernel) hay không, hãy thao tác enter để tiếp tục.

Để kiểm tra thông tin phiên bản php, hãy tạo tệp “info.php” trong đường dẫn máy chủ “/var/www/html” với nội dung sau.

$ sudo echo "<?php phpinfo(); ?>" > /var/www/html/info.php

Sau khi tạo tệp info hãy thử truy cập đường dẫn http://{IP Server}/info.php để kiểm tra sẽ hiện thông tin như hình dướiNhư vậy, Long Vân đã hoàn thành hướng dẫn cài đặt LAMP trên Ubuntu 22.04. Chúc Quý khách thành công!