Tối ưu hóa hiệu suất Nginx

Tác giả NetworkEngineer, T.Hai 01, 2021, 04:00:33 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Tối ưu hóa hiệu suất Nginx


Nginx phát âm là engine-x, là một máy chủ proxy ngược mã nguồn mở cho các giao thức HTTP, HTTPS, SMTP, POP3 và IMAP, cũng như bộ cân bằng tải, bộ đệm HTTP và máy chủ web.

Mặc dù mọi người đã nghe nói về Apache nhưng Nginx cũng rất nổi tiếng và cả hai cùng chịu trách nhiệm phục vụ hơn 50% lưu lượng truy cập trên internet. Xét về các trang web được xếp hạng hàng đầu trên thế giới, Nginx thực sự đi trước Apache, chiếm 45% trong số các trang web được xếp hạng trong 10.000 trang hàng đầu theo lưu lượng truy cập. Lý do cho việc áp dụng Nginx nhanh chóng là vì tốc độ của nó, nó được tạo ra để đối phó với vấn đề C10K, một thách thức của web hiện đại khi ngày càng có nhiều máy chủ phải bắt đầu xử lý mười nghìn kết nối đồng thời.

Các con số sử dụng cho thấy sự tin cậy mà mọi người đặt vào Nginx để chạy các dịch vụ web của họ, đặc biệt là những dịch vụ có lượng truy cập cao nhất. Đó là một công cụ đáng tin cậy đã được chứng minh. Nhưng đối với bất kỳ ứng dụng nào, bạn phải luôn đảm bảo rằng mọi thứ đang chạy trơn tru và an toàn nhất có thể. Dưới đây là 6 phương pháp hay nhất sẽ đảm bảo bạn đang tận dụng tối đa thiết lập Nginx của mình.


1. Điều chỉnh worker_processes.

Kiến trúc tiến trình chính và worker_processes của Nginx được giải thích như sau: "nginx có một tiến trình chính và một số worker_processes. Mục đích chính của tiến trình tổng thể là đọc và đánh giá cấu hình cũng như duy trì các worker_processes. Worker_processes xử lý thực tế các yêu cầu. Nginx sử dụng mô hình dựa trên sự kiện và các cơ chế phụ thuộc vào hệ điều hành để phân phối hiệu quả các yêu cầu giữa các worker_processes. "

Nói cách khác, worker_processes cho máy chủ ảo của bạn biết có bao nhiêu lõi được chỉ định cho mỗi bộ xử lý để Nginx có thể quản lý các yêu cầu đồng thời theo cách tối ưu hóa. Đường dẫn cấu hình Nginx mặc định là: /etc/nginx/nginx.conf

Để biết bạn có bao nhiêu bộ xử lý trong máy chủ web của mình, hãy chạy lệnh sau.

Mã nguồn [Chọn]
grep processor /proc/cpuinfo | wc –l
Trong trường hợp này, số đầu ra hiển thị 1 lõi CPU. Thực tế phổ biến là chạy 1 worker_processes trên mỗi lõi, vì vậy trong trường hợp này, bạn nên đặt worker_processes thành 1 để có hiệu suất cao nhất trong tệp cấu hình Nginx.

Mã nguồn [Chọn]
worker_processes 1;
2. Tối đa hóa worker_connections.

Worker_connections cho các worker_processes biết có bao nhiêu máy khách có thể được phục vụ đồng thời bởi Nginx. Giá trị mặc định cho giá trị này là 768 nhưng điều quan trọng cần lưu ý là mỗi trình duyệt thường sẽ mở ít nhất 2 kết nối máy chủ. Số lượng tối đa cho cài đặt kết nối worker_processes là 1024 và tốt nhất nên sử dụng số này để khai thác toàn bộ tiềm năng từ Nginx. Trên cơ sở này, giả sử 1 lõi cho mỗi worker_processes, việc đặt worker_connections thành 1024 ngụ ý rằng Nginx có thể phục vụ 1024 máy khách/giây.

3. Bật tính năng nén Gzip.

Gzip là một ứng dụng phần mềm dùng để nén và giải nén tập tin. Hầu hết các máy chủ và máy khách ngày nay đều hỗ trợ gzip. Khi trình duyệt tương thích với gzip yêu cầu một tài nguyên, máy chủ sẽ nén phản hồi trước khi gửi đến trình duyệt. Gzip là một cách tuyệt vời để tối ưu hóa máy chủ Nginx của bạn cũng như làm cho mọi thứ hiệu quả hơn. Có một vài bước đơn giản để bật Gzip trong môi trường Nginx của bạn. Tạo tệp tại /etc/nginx/conf.d/gzip.conf với nội dung sau:

Mã nguồn [Chọn]
gzip on;

gzip_proxied any;

gzip_types text/plain text/xml text/css application/x-javascript;

gzip_vary on;

gzip_disable "MSIE [1-6]\.(?!.*SV1)";

Sau khi tệp đó ở đúng vị trí, bạn chỉ cần khởi động lại máy chủ của mình và bây giờ bạn sẽ cung cấp nội dung trang web với nén gzip.


4. Bật bộ nhớ đệm cho 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 khách truy cập đến trang web của bạn, phiên bản đã lưu trong bộ nhớ cache sẽ được phục vụ trừ khi nó đã thay đổi kể từ lần lưu cuối cùng. Trong môi trường Nginx của mình, bạn có thể thêm các lệnh sau để yêu cầu máy tính của mình lưu vào bộ đệm các tệp tĩnh của trang web để có khả năng truy cập nhanh hơn. Vị trí mặc định cho việc này là:

Mã nguồn [Chọn]
etc/nginx/sites-available/sitename

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

   expires 365d;

}

Trong ví dụ này, tất cả các tệp .jpg, .jpeg, .png, .gif, .ico, .css và .js đều nhận được hết hạn với ngày 365 ngày trong tương lai, kể từ thời gian truy cập trình duyệt.

5. Tắt access_logs.

Nginx ghi nhật ký từng hành động trong tệp nhật ký có tên "access.log". Nếu bạn không yêu cầu thông tin này thì tốt hơn là vô hiệu hóa nó, điều này sẽ tiết kiệm cho môi trường của bạn một loạt các xử lý bổ sung và không gian ổ cứng. Để tắt nhật ký, chỉ cần viết điều kiện tắt bên cạnh cú pháp access_log như sau:

Mã nguồn [Chọn]
access_log off;
6. Giám sát máy chủ Nginx của bạn với Monitis.

Nếu bạn đang tìm kiếm trang web và máy chủ theo dõi hiệu suất và trang web tốt nhất trong lớp thì bạn cần đến Monitis. Với dịch vụ toàn cầu hàng đầu trong ngành, Monitis cho phép các doanh nghiệp giám sát trung tâm cơ sở hạ tầng của họ bất cứ lúc nào và từ bất cứ đâu. Nếu bạn muốn bớt lo lắng và phiền phức, thì tại sao không giám sát các máy chủ Nginx của mình bằng Monitis?

Hãy tưởng tượng bạn có thể xem trực tiếp tình trạng hoạt động và hiệu suất máy chủ của mình trong môi trường dựa trên đám mây, để bạn tìm hiểu về các vấn đề tiềm ẩn trước khi khách hàng phát hiện ra. Bằng cách giữ cho cơ sở hạ tầng máy chủ của bạn hoạt động trơn tru và hiệu quả hơn, Monitis giảm bớt căng thẳng và giúp bạn tập trung vào việc điều hành doanh nghiệp của mình.

Nếu bạn nghiêm túc về hiệu suất máy chủ và đặc biệt là môi trường Nginx của mình, thì hãy chuyển đến Monitis ngay hôm nay và bắt đầu dùng thử miễn phí. Một khi bạn thấy những lợi ích của nền tảng giám sát Monitis, bạn sẽ rất vui vì đã làm được điều mong muốn.