Vài đường cơ bản về tuning performance cho NGINX

nginx

Các bạn có thể copy file setting bên dưới về web-site chạy nginx của mình để dùng.

user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
events {
    worker_connections 2048;
    multi_accept on;
    use epoll;
}
http {
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    access_log off;
    error_log /var/log/nginx/error.log crit;
    keepalive_timeout 10;
    client_header_timeout 10;
    client_body_timeout 10;
    reset_timedout_connection on;
    send_timeout 10;
    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 100;
    include /etc/nginx/mime.types;
    default_type text/html;
    charset UTF-8;
    gzip on;
    gzip_http_version 1.0;
    gzip_disable "msie6";
    gzip_proxied any;
    gzip_min_length 1024;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;
    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Mình sẽ nói sơ qua về các setting mà mình đã dùng ở trên như sau:

  • worker_processes auto; –> cái này chỉ số process mà Nginx sẽ dùng để xử lý request, nếu để auto thì Nginx sẽ tự động setting phù hợp theo số CPU của server
  • worker_rlimit_nofile 100000; –> tổng số file mà các worker process có thể open, mỗi request mở 2 file thì ở đây Nginx có thể xử lý 50000 requests 1 lúc
  • worker_connections 2048; –> số connection mà 1 worker process có thể mở, cái này càng lớn thì xử lý càng nhanh nhưng nó còn phụ thuộc vào limit của OS (không thể nhiều hơn số file mà OS cho phép mở)
  • multi_accept on; –> tiếp nhận request từ client nhiều nhất có thể
  • use epoll; –> cái này thì Linux kernel 2.6 trở lên thì dùng epoll, còn trường hợp BSD thì dùng kqueue
  • server_tokens off; –> để đảm bảo security thì không hiển version của Nginx trong màn hình lỗi (4xx hay 5xx)
  • sendfile on; –> chỉ định ON để đảm bảo sự cân bằng giữa tốc độ io của hard-disk với io của socket
  • tcp_nopush on; –> gói tất cả thông tin header vào trong một data package
  • tcp_nodelay on; –> không cache data, cứ gửi liên tục (cái này thích cho các realtime app)
  • keepalive_timeout 10; –> giảm bớt thời gian timeout của keep-alive để giảm tải cho server
  • client_header_timeout 10; –> giảm bớt thời gian timeout của client để giảm tải cho server
  • client_body_timeout 10; –> giảm bớt thời gian timeout của client để giảm tải cho server
  • reset_timedout_connection on; –> đóng các connection của các client không active
  • send_timeout 10; –> thời gian timeout khi gửi data đến client
  • limit_conn_zone $binary_remote_addr zone=addr:5m; –> chỉ định lượng memory dùng cho các loại key
  • limit_conn addr 100; –> chỉ định số connection lớn nhất của key (ví dụ: 100 ở đây là 1 địa chỉ IP sẽ request được 100 connection)
  • gzip on; –> nén bằng gzip
  • gzip_http_version 1.0; –> chỉ định version của http khi nén
  • gzip_disable "msie6"; –> không nén theo định dạng ie6
  • gzip_proxied any; –> nén tất cả các proxy
  • gzip_min_length 1024; –> chỉ nén những data có size từ 1024 trở lên
  • gzip_comp_level 6; –> setting level nén từ 1-9
  • gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json; –> chỉ định type của file nén
  • open_file_cache max=100000 inactive=20s; –> những file không thường dùng thì sẽ bị xóa sau 20 giây, số cache có thể open tối đa là 100000
  • open_file_cache_valid 30s; –> thông tin được lưu trong bộ nhớ cache nhanh chóng lỗi thời nên cần chỉ định thời gian để Nginx tái xác nhận 1 mục trong bộ nhớ cache (bộ nhớ đệm)
  • open_file_cache_min_uses 2; –> số file nhỏ nhất không active của open_file_cache
  • open_file_cache_errors on; –> lưu luôn thông tin về error vào cache

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です