Đánh giá Hosting

Menu
  • Home
  • Tin tức
  • Đánh giá
    • Dịch vụ hosting chia sẻ
    • Dịch vụ máy chủ ảo
    • Dịch vụ máy chủ riêng
  • Quản trị
  • Khuyến mãi
  • Làm Web
  • Thủ thuật
  • MMO
Home
Quản trị
Hướng dẫn cấu hình tối ưu Nginx và PHP-FPM
Quản trị

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

Hoàng Trung August 6, 2021

Bài viết này sẽ hướng dẫn các bạn cấu hình tối ưu Nginx và PHP-FPM, mục đích chung của việc này là giúp Nginx và PHP-FPM hoạt động hiệu quả hơn, sử dụng tài nguyên hợp lý hơn, thông qua đó tăng cường khả năng chịu tải của toàn bộ hệ thống, không lãng phí tài nguyên vô ích.

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

Trong bài viết này chúng tôi bỏ qua phần cài đặt và cấu hình cơ bản cho Nginx và PHP-FPM, hoặc nếu bạn chưa hiểu việc cài đặt có thể sử dụng lệnh sau đây để cài đặt toàn bộ các thành phần cần thiết.

 # yum install php php-fpm php-mysql php-cgi php-cli php-gd nginx mysql-server -y 

Mặc định sau khi cài đặt thành công, các file cấu hình của Nginx sẽ nằm tại /etc/nginx và các file cấu hình PHP-FPM sẽ nằm tại /etc/php-fpm.d. Đầu tiên chúng ta sẽ cấu hình Nginx trước.

I. NGINX

Mở file /etc/nginx/nginx.conf và điều chỉnh theo các hướng dẫn sau.

Đầu tiên các bạn phải biết công thức max_clients = worker_processes * worker_connections, số lượng người truy cập tối đa Nginx có thể phục vụ bằng thông số worker_processes nhân với worker_connections. Mặc định sau khi cài đặt Nginx thì worker_processes là 1 và worker_connections là 1024.

Các bạn cần chỉnh lại worker_processes bằng với số lượng CPU core bạn được sử dụng, hoặc của VPS/Dedicated của bạn. Thường lúc đăng ký VPS sẽ có số lượng CPU Core có thể sử dụng hoặc bạn có thể xem số CPU Core thông qua lệnh sau:

 cat /proc/cpuinfo |grep processor 
 processor : 0 
 processor : 1 
 processor : 2 
 processor : 3 

Trong trường hợp này là 4, các bạn chỉnh sửa thông số worker_processes thành 4. Tuy nhiên nếu bạn có ít hơn 4 thì không nên ghi khống bởi như vậy hệ thống sẽ hoạt động không ổn định và lỗi.

Với worker_connections mặc định là 1024 và worker_processes đã được điều chỉnh thành 4 như trên thì số lượng người truy cập tối đa đã lên đến 1024 * 4 = 4096. Con số này là đủ lớn nên bạn không cần thay đổi gì thêm, trường hợp bạn chỉ có 2 CPU Core nhưng muốn nâng cao số lượng truy cập có thể phục vụ bạn có thể nâng worker_connections lên thành 2048, nhưng điều này đôi khi xảy ra lỗi trên một số VPS, nên bạn cần thêm thông số sau đây vào file nginx.conf, ngay trên worker_connections.

 worker_rlimit_nofile 2048; 

Các bạn cũng nên xóa thông tin phiên bản của Nginx đang sử dụng và các thông tin quan trọng của Nginx bằng việc sửa hoặc bổ sung thông số

 server_tokens off; 

Các bạn cũng cần thiết giới hạn kích thước body của các http request và buffer dùng xử lý http request thông qua việc thêm hai thông số sau đây vào file cấu hình

 client_max_body_size 20m; 
 client_body_buffer_size 128k; 

Các bạn cũng nên yêu cầu client cache lại các file tĩnh và ít bị thay đổi, điều đó giúp bạn tiết kiệm băng thông hơn vì không phải tải lại các file tĩnh đó, bạn thêm nội dung sau đây vào từng virtual host trên Nginx. Ngoài ra khi truy cập các file tĩnh cũng không nên log lại vì quá trình ghi log sẽ làm giảm tốc độ xử lý của Nginx, chúng ta bỏ luôn việc log khi truy cập các file tĩnh.

 location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ 
 access_log off; 
 log_not_found off; 
 expires 360d; 
 

Thông thường việc liên lạc giữa Nginx và PHP-FPM sẽ sử dụng tcp socket, việc này sẽ làm chậm tốc độ đáng kể so với sử dụng unix socket, do đó bạn cần chỉnh lại thay vì sử dụng tcp socket nên sử dụng unix socket cho việc truyền tải thông tin, đặt biệt nếu sử dụng ssd thì việc này sẽ càng hiệu quả.

 location ~* .php$ 
 fastcgi_index index.php; 
 fastcgi_pass 127.0.0.1:9000; 
 include fastcgi_params; 
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
 fastcgi_param SCRIPT_NAME $fastcgi_script_name; 
 

Nên chuyển thành như sau

 location ~* .php$ 
 fastcgi_index index.php; 
 #Chinh tai day 
 fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
 include fastcgi_params; 
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
 fastcgi_param SCRIPT_NAME $fastcgi_script_name; 
 

Các bạn cũng không nên cho phép truy cập các file hoặc thư mục ẩn, file và thư mục ẩn trên Linux sẽ có dấu chấm (.) trước tên file, thư mục. Do đó bạn có thể cấu hình như sau để không cho phép truy cập trực tiếp vào.

 location ~ /. 
 access_log off; 
 log_not_found off; 
 deny all; 
 

II. PHP-FPM

Một file cấu hình PHP-FPM tương tự như sau

 [site] 
 # chỉnh đường dẫn giống như trong file Nginx ở trên
 listen = /var/run/php-fpm/php-fpm.sock
 user = site 
 group = site 
 request_slowlog_timeout = 5s 
 slowlog = /var/log/php-fpm/slowlog-site.log 
 listen.allowed_clients = 127.0.0.1 
 pm = dynamic 
 pm.max_children = 5 
 pm.start_servers = 3 
 pm.min_spare_servers = 2 
 pm.max_spare_servers = 4 
 pm.max_requests = 200 
 listen.backlog = -1 
 pm.status_path = /status 
 request_terminate_timeout = 120s 
 rlimit_files = 131072 
 rlimit_core = unlimited 
 catch_workers_output = yes 
 env[HOSTNAME] = $HOSTNAME 
 env[TMP] = /tmp 
 env[TMPDIR] = /tmp 
 env[TEMP] = /tmp 

Thực sự đối với PHP-FPM các bạn chỉ cần quan tâm đến các thông số sau : pm, pm.max_children, pm.start_servers, pm.min_spare_servers và pm.max_spare_servers. Trong đó pm là chế độ quản lý process của PHP-FPM, bao gồm có static, ondemand, dynamic. Thường chúng ta sử dụng dynamic như trên. Theo đó thì ý nghĩa các thông số pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers lần lượt sẽ là số process con (child processes) tối đa được tạo (tương đương tổng số request có thể phục vụ), tổng số child processes được tạo khi khởi động php-fpm (được tính bằng công thức min_spare_servers + (max_spare_servers – min_spare_servers) / 2 ), tổng số child process nhàn rỗi tối thiểu được duy trì và cuối cùng là tổng số child process nhàn rỗi tối đa được duy trì.

Đặt biệt trong đó có tham số pm.max_requests, đây là tổng số request mà child process xử lý trước khi được tái tạo lại. Với WordPress các bạn có thể đặt con số này nhỏ, tương đương 200 đến 300, việc này rất hiệu quả khi giảm thiểu được tình trạng memory leak do các plugin trên WordPress gây ra.

Dựa vào trong tình hình thực tế của VPS, server của bạn mà điều chỉnh các con số trên cho phù hợp. Bạn cũng có thể đăng ký sử dụng dịch vụ tại một nhà cung cấp lớn, uy tín và chất lượng như Công Nghệ VPS để được tư vấn và cài đặt giúp.

Ví dụ file config PHP-FPM thường được Công Nghệ VPS tư vấn sử dụng cho các source code như Xenforo và vBB cho forum vừa và nhỏ như sau

 [forums] 
 listen = 127.0.0.1:9002 
 user = forums 
 group = forums 
 request_slowlog_timeout = 5s 
 slowlog = /var/log/php-fpm/slowlog-forums.log 
 listen.allowed_clients = 127.0.0.1 
 pm = dynamic 
 pm.max_children = 10 
 pm.start_servers = 3 
 pm.min_spare_servers = 2 
 pm.max_spare_servers = 4 
 pm.max_requests = 400 
 listen.backlog = -1 
 pm.status_path = /status 
 request_terminate_timeout = 120s 
 rlimit_files = 131072 
 rlimit_core = unlimited 
 catch_workers_output = yes 
 env[HOSTNAME] = $HOSTNAME 
 env[TMP] = /tmp 
 env[TMPDIR] = /tmp 
 env[TEMP] = /tmp 

Nguồn: Công nghệ VPS

Nguồn: Hướng dẫn Cấu Hình Tối Ưu Nginx Và PHP-FPM

Share
Tweet
Email
Prev Article
Next Article

Related Articles

Servertut scripts: Công cụ giúp cài đặt và quản trị VPS/Server dễ dàng (Bài 1)
Bài 1. Giới thiệu và cài đặt Servertut scripts Tôi …

Servertut scripts: Công cụ giúp cài đặt và quản trị VPS/Server dễ dàng (Bài 1)

Servertut Script bài 3: Hướng dẫn sử dụng các chức năng trong menu chính
Trong hai bài trước, tôi đã hướng dẫn cài đặt …

Servertut Script bài 3: Hướng dẫn sử dụng các chức năng trong menu chính

About The Author

danhgiahost
Hoàng Trung

Leave a Reply Cancel Reply

CHUYÊN MỤC

  • Thông tin – Kiến thức
    • Kiến thức
    • Thông tin nhà cung cấp
  • Đánh giá
    • Dịch vụ máy chủ riêng
    • Dịch vụ máy chủ ảo
    • Dịch vụ hosting chia sẻ
    • Các dịch vụ khác
  • Khuyến mãi
  • Quản trị
  • Thủ thuật – Tiện ích
    • Làm Web
  • MMO
  • Video

ĐƯỢC QUAN TÂM

    KHUYẾN MÃI

    • Black Friday 2024: StableHost giảm giá đến 70%
      Black Friday 2024: StableHost giảm giá đến 70%
    • Hawk Host Khuyến Mãi Black Friday 2024: Giảm Giá Lên Đến 70%!
      Hawk Host Khuyến Mãi Black Friday 2024: Giảm Giá Lên Đến 70%!
    • Khuyến Mãi Black Friday 2024 của ColoCrossing – Giảm Giá Đặc Biệt cho Máy Chủ Dành Riêng, VPS & Cloud Metal Servers!
      Khuyến Mãi Black Friday 2024 của ColoCrossing – Giảm Giá Đặc Biệt cho Máy Chủ Dành Riêng, VPS & Cloud Metal Servers!
    • Khuyến Mãi Black Friday & Cyber Monday 2024 của GreenCloud VPS – Giảm Giá Đến 90%
      Khuyến Mãi Black Friday & Cyber Monday 2024 của GreenCloud VPS – Giảm Giá Đến 90%
    • UltraVPS.eu Ưu Đãi Đặc Biệt nhân Kỷ Niệm 25 Năm Thành Lập và Black Friday 2024
      UltraVPS.eu Ưu Đãi Đặc Biệt nhân Kỷ Niệm 25 Năm Thành Lập và Black Friday 2024

    ĐÁNH GIÁ

    • Đánh giá, so sánh hiệu suất Disk và CPU của Linode, DigitalOcean, UpCloud, Hetzner, Terrahost và Scaleway
      Đánh giá, so sánh hiệu suất Disk và CPU của Linode, DigitalOcean, UpCloud, Hetzner, Terrahost và Scaleway
    • 10 nhà cung cấp dich vụ CDN tốt nhất thế giới
      10 nhà cung cấp dich vụ CDN tốt nhất thế giới
    • Tham khảo kết quả đánh giá VPS 512Mb, 1Gb và 2Gb RAM của DigitalOcean
      Tham khảo kết quả đánh giá VPS 512Mb, 1Gb và 2Gb RAM của DigitalOcean
    • Tham khảo kết quả benchmark đánh giá dịch vụ SSD VPS của Vultr
      Tham khảo kết quả benchmark đánh giá dịch vụ SSD VPS của Vultr
    • Top 10 nhà cung cấp dịch vụ VPS giá rẻ quý I/2014
      Top 10 nhà cung cấp dịch vụ VPS giá rẻ quý I/2014

    LIÊN QUAN

    • Sử dụng kết hợp FileZilla và Notepad++ để tạo và chỉnh sửa file trên VPS
      Sử dụng kết hợp FileZilla và Notepad++ để tạo và chỉnh sửa file trên VPS
    • Hướng dẫn cài đặt acmetool.sh để sử dụng Let’s Encrypt SSL trên Centmin Mod
      Hướng dẫn cài đặt acmetool.sh để sử dụng Let’s Encrypt SSL trên Centmin Mod
    • Servertut Script bài 3: Hướng dẫn sử dụng các chức năng trong menu chính
      Servertut Script bài 3: Hướng dẫn sử dụng các chức năng trong menu chính
    • Hướng dẫn cài đặt phpMyAdmin cho CentminMod
      Hướng dẫn cài đặt phpMyAdmin cho CentminMod
    • Hướng dẫn trỏ domain từ nhà cung cấp về IP của VPS
      Hướng dẫn trỏ domain từ nhà cung cấp về IP của VPS

    Đánh giá Hosting

    Copyright © 2025 Đánh giá Hosting

    Ad Blocker Detected

    Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker.

    Refresh