8 cách bạn có thể tinh chỉnh hiệu suất NGINX trên Linux
NGINX là một máy chủ web mã nguồn mở, miễn phí và phổ biến. Các cấu hình NGINX mặc định đủ tốt để máy chủ web hoạt động.
Tuy nhiên, nếu bạn muốn sử dụng NGINX một cách tối đa, bạn cần chơi với các tệp cấu hình của nó và đặt các tham số sẽ tối ưu hóa hiệu suất của máy chủ. Bạn sẽ tìm thấy các tập tin cấu hình trong /etc/nginx thư mục trên máy Linux.
Mục Lục
NGINX là gì?
NGINX là một máy chủ web hiện đại mà bạn có thể sử dụng làm bộ truyền phát phương tiện, máy chủ thư, proxy ngược, bộ cân bằng tải, máy chủ bộ đệm, v.v.
Được sử dụng bởi nhiều cấu hình lớn như VMware, IBM, Cisco, Apple, Microsoft LinkedIn, Netflix, Facebook, Twitter, v.v., NGINX được biết đến rộng rãi với hiệu suất vượt trội. Một ưu điểm khác của việc sử dụng NGINX là dễ dàng cấu hình và tìm hiểu.
Điều kiện tiên quyết để điều chỉnh hiệu suất NGINX trên Linux
Bạn cần đáp ứng các yêu cầu sau trước khi bắt đầu với cấu hình NGINX:
- Một máy chủ NGINX được triển khai và cấu hình trên Linux
- Hiểu biết cơ bản về NGINX và các tệp cấu hình của nó
Nếu bạn đáp ứng các yêu cầu này, bạn đã sẵn sàng điều chỉnh NGINX để có hiệu suất tối ưu. Hãy xem làm thế nào để làm điều đó.
1. Cấu hình Worker Process trong NGINX
Kiến trúc NGINX bao gồm một quy trình chính và một số quy trình công nhân. Công việc của quy trình tổng thể là đánh giá cấu hình và quản lý công nhân. Mặt khác, vai trò của worker process là xử lý các yêu cầu đến và tạo kết nối giữa máy khách và máy chủ.
Giá trị quá trình được đặt thành tự động theo mặc định. Điều này đặt số lượng worker process bằng với số lượng lõi CPU có sẵn. Để biết có bao nhiêu lõi CPU trong hệ thống của bạn, hãy chạy lệnh sau:
grep processor /proc/cpuinfo | wc -l
Nếu bạn muốn tăng số lượng worker process, bạn cần định cấu hình điều này trong tệp cấu hình NGINX.
Mở tệp bằng nano:
nano etc/nginx/nginx.conf
Để định cấu hình nhiều quy trình công nhân hơn, hãy thay đổi giá trị mặc định thành số lõi CPU khả dụng tối đa trong hệ thống của bạn.
2. Định cấu hình kết nối công nhân
Một tham số khác mà bạn có thể sửa đổi để nâng cao hiệu suất của NGINX là các kết nối worker. Đây là số lượng kết nối TCP tối đa mà mỗi worker process có thể xử lý đồng thời.
Hầu hết các hệ thống có giá trị mặc định là 512 kết nối, nhưng nhiều hệ thống hiện đại cũng hỗ trợ số lượng lớn hơn. Bạn có thể kiểm tra xem hệ thống của mình hỗ trợ bao nhiêu kết nối bằng:
ulimit -n
Đầu ra sẽ là số lượng kết nối tối đa được hỗ trợ. Sau đó, bạn có thể sửa đổi worker_connections biến trong tệp cấu hình NGINX để cải thiện hiệu suất.
3. Cho phép nén GZIP trong NGINX
NGINX sử dụng GZIP để nén và giải nén tệp. Nếu được bật trong tệp cấu hình NGINX, bạn có thể tiết kiệm băng thông và tăng thời gian tải của trang web khi kết nối chậm.
Để cho phép nén GZIP, hãy thêm các dòng sau vào tệp cấu hình NGINX:
server {
gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6].";
}
4. Giới hạn giá trị thời gian chờ trong NGINX
Các giá trị thời gian chờ giảm cũng đóng một vai trò quan trọng trong việc nâng cao hiệu suất NGINX. Các cố sống đi kết nối giảm bộ xử lý và chi phí mạng khi mở và đóng kết nối.
Bạn có thể sửa đổi các tham số sau trong tệp cấu hình để giới hạn thời gian chờ:
http
{
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
}
5. Điều chỉnh kích thước bộ đệm
Bạn cũng có thể điều chỉnh bộ đệm NGINX để tối ưu hóa hiệu suất của máy chủ. Nếu kích thước bộ đệm quá thấp, thì NGINX sẽ ghi vào một tệp tạm thời khiến các hoạt động I/O lớn chạy liên tục.
Bạn cần thiết lập các tham số bộ đệm sau để NGINX hoạt động tốt nhất:
http
{
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;
}
6. Tắt Access Logs hoặc Enable Access Log Buffering
Nhật ký tiêu tốn một lượng lớn dung lượng ổ đĩa và chu kỳ CPU/IO có thể ảnh hưởng đến hiệu suất của máy chủ nếu nó ghi lại mọi yêu cầu.
Bạn có thể vô hiệu hóa nhật ký truy cập, điều này sẽ tiết kiệm một số dung lượng ổ đĩa và xử lý CPU. Để tắt nhật ký truy cập, hãy thêm dòng sau vào tệp cấu hình NGINX:
access_log off;
Nhật ký rất quan trọng vì chúng giúp khắc phục sự cố. Vô hiệu hóa hoàn toàn các bản ghi không phải là một thực hành tốt. Trong trường hợp này, bạn có thể bật tính năng đệm nhật ký truy cập. Điều này sẽ cho phép NGINX đệm một loạt nhật ký và ghi chúng vào tệp nhật ký cùng một lúc thay vì áp dụng các thao tác nhật ký khác nhau cho mỗi yêu cầu.
Thêm dòng sau vào tệp cấu hình NGINX để cho phép đệm nhật ký truy cập:
access_log /var/log/nginx/access.log main buffer=16k
7. Điều chỉnh thời gian lưu trữ nội dung tĩnh trong NGINX
Nội dung trên trang web không thay đổi trên các trang được gọi là nội dung tĩnh. Bộ nhớ đệm của nội dung này cho phép nó được đặt ở những vị trí dễ truy cập. Cơ chế này làm giảm mức sử dụng băng thông, cho phép khả năng truy cập nhanh và sau đó cải thiện hiệu suất của trang web.
Khi khách hàng yêu cầu nội dung tĩnh, máy chủ sẽ cung cấp phiên bản nội dung được lưu trong bộ nhớ cache. Thêm các dòng sau vào tệp máy chủ ảo được đặt trong /etc/nginx/sites-available danh mục:
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 90d;
}
Cấu hình này sẽ lưu trữ các tệp trong 90 ngày kể từ lần truy cập trình duyệt cuối cùng.
8. Bật Open File Cache trong NGINX
Bạn cũng có thể sử dụng các tham số bộ đệm tệp mở trong tệp cấu hình NGINX để nâng cao hiệu suất của nó. Chỉ thị này cho phép bộ mô tả tệp và các tệp được truy cập thường xuyên được lưu vào bộ đệm cho máy chủ.
Thêm các dòng sau vào http phần trong tệp cấu hình để bật bộ đệm tệp mở:
http {
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
Tận dụng tối đa NGINX bằng cách sửa đổi các tệp cấu hình của nó
Một phương pháp hay để tuân theo khi thay đổi cấu hình là xử lý từng cài đặt một và kiểm tra cài đặt đó. Nếu nó hoạt động, hãy chuyển sang cài đặt tiếp theo. Nếu không, bạn luôn có thể thay đổi cấu hình về giá trị mặc định.
Bằng cách sửa đổi các tham số được định cấu hình trong tệp cấu hình NGINX, chẳng hạn như nginx.conf và các tệp máy chủ ảo, bạn có thể hack NGINX để mang lại hiệu suất tốt nhất.