Loading...

Tối ưu Nginx & PHP-FPM (Tuning Nginx & PHP-FPM)!

nginx-1

TỐI ƯU NGINX & PHP-FPM (TUNING NGINX & PHP-FPM)

1. Giới thiệu

  • Ngày nay, máy chủ Web thường hoạt động trên môi trường Windows, Unix/ Linux và người làm công nghệ thông tin, cụ thể là “System Admin” hay thường dùng Apache hoặc Nginx Web Server. Mức độ ưu chuộng thì Nginx thực sự vượt lên trên Apache trong những năm gần đây bởi lý do là tốc độ, khai thác tài nguyên rất ít, dễ cấu hình, tính phổ biến và đặc biệt ngày càng có nhiều hệ thống máy chủ Web đòi hỏi cần phải xử lý đến hàng nghìn kết nối đồng thời (CCU).
  • Đối với việc dùng Nginx làm máy chủ Web thực sự là rất nhanh, nhưng chúng ta cần phải điều chỉnh một vài thứ để đảm bảo cho Nginx có thể nhanh hơn so với các thông số cấu hình mặc định và đảm bảo phù hợp với trường hợp cụ thể của từng máy chủ Web (CPU, RAM, Sata/ SAS/ SSD) đang chạy Nginx và dưới đây là một số tham số có thể giúp chúng ta tối ưu được hiệu suất cho máy chủ Web (Nginx tuning):

2. Điều chỉnh worker_ Processes

  • Chọn file để thay đổi thông số cấu hình: “/etc/nginx/nginx.conf”
  • Kiểm tra số lượng CPU hiện có trên máy chủ với “command line” bên dưới

#grep processor /proc/cpuinfo | wc –l

  • Trong trường hợp nếu chỉ có một (01) core CPU thì “worker_processes 1;”
  • Ngoài ra có thể cấu hình với tham số “auto” như: “worker_processes auto;”

3. Kích hoạt tính năng nén của Gzip

  • Gzip là phần mềm được dùng trong Ngnix là nén và giải nén file. Khi “Browser” yêu cầu tài nguyên thì máy chủ Web sẽ nén trước khi gửi đến “Browser”. Gzip giúp tối ưu hiệu suất máy chủ Web cũng như làm cho mọi thứ trở nên hiệu quả hơn và chỉ cần vài bước đơn giản để bật “on” cho Gzip trong môi trường Nginx như bên dưới.
  • Tạo file “gzip.conf” trong “/etc/nginx/conf.d/” theo các cấu hình bên dưới:

gzip on;

gzip_vary on;

gzip_proxied any;

gzip_comp_level 1;

gzip_buffers 16 8k;

gzip_http_version 1.1;

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  • Lưu ý: “restart” lại Nginx Web Server.

4. Kích hoạt bộ nhớ đệm cho các tệp tĩnh

  • Bộ nhớ đệm là một cơ chế để lưu trữ tạm thời các trang web nhằm giảm băng thông và cải thiện hiệu suất. Khi người dùng viếng thăm trang web, nội dung được lưu trong bộ nhớ cache sẽ được phục vụ trừ khi nó đã thay đổi kể từ lần lưu trữ cuối cùng và trong Nginx các nội dung tĩnh (static files) sẽ được truy cập nhanh hơn do đã lưu sẵn trong bộ đệm (cache).
  • Tập tin cấu hình mặc định: “/etc/nginx/sites-available/sitename”

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {

                expires 365d;

}

5. Vô hiệu hóa access_logs

  • Nginx ghi nhật ký Log trong tập tin “log”. Nếu không yêu cầu thông tin này thì có thể loại bỏ nó, điều này sẽ giúp giảm thiểu các xử lý và dung lượng lưu trữ trên ổ cứng.
  • Để tắt chức năng này, chỉ cần thay thế “on” thành “off” như bên dưới:

access_log off;

6. Tối ưu cho PHP và PHP-FPM (FastCGI Process Manager)

  • PHP-FPM ít tiêu hao tài nguyên (CPU) khi chạy chương trình (có thể nhiều RAM nhưng tính hiệu quả & lợi ích lại là rất cao của PHP-FPM là không thể phủ nhận), hỗ trợ cho Ngnix tối ưu trong việc xử lý, tính ổn định và bảo mật cao hơn nhiều so với chương trình CGI (trước đây CGI khá phổ biến và dần mất đi vị thế của nó trên thị trường nằm ở hiệu suất thấp), đồng thời PHP-FPM giúp cho tốc độ tải trang nhanh hơn, việc truy cập của người dùng trở nên dễ dàng và giúp cho lưu lượng truy cập trang tăng cao hơn.
  • Ngày nay, có rất nhiều trang website sử dụng ngôn ngữ PHP như: WordPress, Laravel, Phalcon, OpenCart, Magento, … vì do không có mod_php dành riêng cho Nginx, nên được khuyến nghị là khi chạy các ứng dụng PHP có liên quan đến việc sử dụng PHP-FPM, có thể tham khảo các link(s) sau nhằm giúp cho việc tối ưu PHP-FPM và PHP:

www.tweaked.io/guide/nginx/

geekflare.com/php-fpm-optimization/

bobcares.com/blog/php-fpm-tuning-high-load/

www.if-not-true-then-false.com/2011nginx-and-php-fpm-configuration-and-optimizing-tips-and-tricks/

7. Công cụ để kiểm tra, giám sát và đánh giá hiệu suất của Nginx

  • Có thể dùng các tools hoặc đánh giá thông qua các trang website dùng các để kiểm tra, giám sát và đánh giá hiệu suất của máy chủ Web:
    • Jmeter
    • Apache Benchmark
    • https://www.webpagetest.org

8. Kết luận

  • Đối với Nginx
    • Là loại máy chủ Web tốc độ cao, phổ biến, với lượng tiêu tốn tài nguyên thấp và khả năng xử lý đồng thời nhiều kết nối.
    • Có khả năng xử lý rất tốt nếu được tối ưu, cụ thể như Worker processes, nén gzip, static cache, logs, PHP-FPM…
  • Đối với PHP, PHP-FPM
    • PHP-FPM tối ưu quá trình xử lý thông tin của máy chủ Web, hỗ trợ việc xử lý thông tin trong cùng một khoảng thời gian một cách nhanh nhất.
    • Tùy theo nhu cầu và mục đích sử dụng, có thể tinh chỉnh PHP-FPM để phục vụ máy chủ Web tốt nhất.
  • Đối với Log
    • Nginx hỗ trợ ghi lại nhật ký hoạt động của hệ thống trong Log, phục vụ quá trình phát triển và tối ưu máy chủ Web.
    • Sau khi hệ thống máy chủ Web đã được đưa vào sử dụng và ít chỉnh sửa gì thêm, có thể tắt Log để giảm thiểu tài nguyên tiêu hao.
  • Đối với việc đánh giá hiệu suất
    • Là công đoạn quan trọng trước khi đưa máy chủ Web vào sử dụng.
    • Giúp xác định công suất tối đa để giúp tối ưu cho hệ thống Web.
  • Tính đồng bộ và phối hợp
    • Tối ưu hệ thống Web đòi hỏi sự đồng bộ và phối hợp chặt chẽ.
    • Giữa đội ngũ hệ thống và lập trình.
    • Giữa hệ thống với hệ thống: các thành phần của hệ thống Web.

HONEYNET

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *