- vừa được xem lúc

Tối ưu Performance Cho Nginx

0 0 5

Người đăng: Phuong NM

Theo Viblo Asia

Lâu lắm mình mới có thời gian viết lách tí. Lần này xin trở lại share anh em kinh nghiệm về Nginx. Cũng nhân tiện vừa fix cho đối tác, họ đang chạy production mà config để mặc định nhiều quá, dẫn tới lỗi 5xx liên tục. Mặc dù Nginx đang chạy cluster ECS trên AWS. Sau một thời gian lần sờ các thể loại utilisation với mớ logs thì nó cũng lòi ra đầu log của Nginx với nội dung: 512 worker_connections are not enough while connecting to upstream... image.png Bingo... Thấy chỗ log này là cuộc sống bớt bế tắc liền, cách xử lý nó lại đơn giản tới mức mà không thể hình dung được (Phần 1: Event block). Từ hôm ấy mình có ấp ủ dư định về một cái repo đủ best practice của Nginx config để nhiều anh em tránh gặp tình trạng này tối đa. Mời mọi người cùng tham khảo, tham gia đóng góp repo này: https://github.com/mrphuongbn/nginx-best-practice-configuration

Sau đây mình xin chia sẻ kinh nghiệm của mình:

Phần 1: Event Block

worker_connections 4096;

  • Thông thường, mọi người không chỉ định giá trị worker_connections trong cấu hình, do đó, nó sẽ sử dụng giá trị mặc định là 512. Điều này có nghĩa là mỗi process (vCPU) của Nginx instance có thể xử lý tối đa 512 kết nối đồng thời trừ khi được chỉ định khác trong tệp cấu hình được bao gồm. Tuỳ lượng truy cập và chất lượng CPU mà cân nhắc một con số phù hợp, mình từng để con số này tới hàng chục nghìn để làm reverse proxy cho nhiều websites mà vẫn tải tốt. Hi vọng có ai đó chia sẻ thêm về maximum hoặc cách tính của nó.

use epoll;

  • Chỉ thị này thiết lập phương pháp mà Nginx sẽ sử dụng để xử lý các sự kiện trên các kết nối mạng. epoll là một phương pháp hiệu suất cao được sử dụng trên Linux 2.6 và các phiên bản sau. Nó hiệu quả hơn các phương pháp cũ như select và poll, đặc biệt khi xử lý số lượng lớn kết nối.

multi_accept on;

  • Khi chỉ thị này được đặt thành on, mỗi quy trình worker sẽ chấp nhận tất cả các kết nối mới cùng một lúc, thay vì chấp nhận từng kết nối một. Điều này có thể giúp giảm độ trễ khi có nhiều kết nối đến.

Phần 2: Nén file - Compression

Bật nén Gzip.

gzip on;
gzip_static on;

Bật nén cho cả HTTP/1.0 và HTTP/1.1.

gzip_http_version 1.1;

Mức độ nén (1-9). 5 là một sự cân bằng hoàn hảo giữa size và mức sử dụng CPU, cung cấp khoảng 75% giảm kích thước cho hầu hết các tệp ASCII (gần như giống hệt mức độ 9).

gzip_comp_level 5;

Không nén bất cứ thứ gì đã nhỏ và không có khả năng giảm kích thước nhiều nếu có. (mặc định là 20 byte, điều này không hợp lý vì thường dẫn đến tệp lớn hơn sau khi nén) gzip_min_length 256;

Nén dữ liệu ngay cả đối với các client kết nối với chúng ta qua proxy, được xác định bởi header "Via" (cần thiết cho CloudFront). gzip_proxied any;

**Yêu cầu proxy lưu trữ cả phiên bản đã nén và không nén của tài nguyên bất cứ khi nào tiêu đề khả năng Accept-Encoding của client thay đổi; **

  • Tránh vấn đề khi một client không có khả năng gzip (rất hiếm ngày nay) sẽ hiển thị ký tự lộn xộn nếu proxy của họ đưa cho họ phiên bản đã nén.
gzip_vary on;

Nén tất cả các đầu ra được gắn nhãn với một trong các MIME-types sau.

# text/html luôn được nén bởi HttpGzipModule
gzip_types
application/atom+xml
application/javascript
application/json
application/rss+xml
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/svg+xml
image/x-icon
text/css
text/plain
text/x-component;

To be continued... in the GitHub repository.

Bình luận

Bài viết tương tự

- vừa được xem lúc

NGINX là gì? NGINX server hoạt động như thế nào?

Lời nói đầu. Mình thường thấy NGINX dùng trong các dự án, và dự án hiện tại của mình cũng đang dùng.

0 0 44

- vừa được xem lúc

Các cấu hình sai Nginx phổ biến khiến web server của bạn gặp nguy hiểm (Part 1)

Intro. Nginx được sử dụng làm web server, reverse proxy mạnh mẽ, nginx được cài đặt cho khoảng 1/3 số web site trên thế giới này.

0 0 67

- vừa được xem lúc

Giới thiệu về NGINX và core concept

1. NGINX là gì. 2. Tiểu sử.

0 0 28

- vừa được xem lúc

Cấu hình Nginx Server như thế nào?

Nginx là một Web Server phổ biến, quen thuộc đối với những Web Developer. Nginx hoạt động mạnh mẽ với hiệu suất cao, khả năng xử lí nhiều request đồng thời một lúc mà lại tốn ít tài nguyên.

0 0 135

- vừa được xem lúc

Dynamic Routing trong NGINX

Tiếp nối bài viết trước, Cấu hình Nginx Server như thế nào?. Trong bài viết này, mình sẽ giới thiệu về Dynamic Routing trong NGINX.

0 0 36

- vừa được xem lúc

Cách cấu hình NGINX thành Reverse Proxy

Tiếp nối bài viết trước Dynamic Routing trong NGINX, trong bài viết này mình sẽ hướng dẫn các bạn cách cấu hình NGINX thành Reverse Proxy. Một số ưu điểm của Reverse Proxy là:.

0 0 132