网站Logo 清风何往的个人博客

中间件-Nginx的优化

admin
7
2022-06-25
1.调整工作进程:Nginx 的性能很大程度上依赖于工作进程的设置。一般来说,工作进程的数量应等于或接近于 CPU 核心数。
worker_processes auto;
2.cup亲和配置:CPU亲和(affinity)减少进程之间不断频繁切换,减少性能损耗,其实现原理就是通过将CPU核心和nginx工作进程绑定方式,把每个worker进程固定到对应的cpu上执行,减少切换CPU的cache的 miss,获得更好的性能。
worker_cpu_affinity_auto;  #cpu亲和
3.优化工作进程的最大连接数:调整worker_connection参数以优化每个工作进程的最大连接数,默认值通常是足够的,但也可以根据实际需求来调整。
events {
    worker_connections 1024;
}
4.启用缓存:启用文件缓存,nginx可以缓存静态文件,减少磁盘IO
http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
}
启动代理缓存:如果nginx作为反向代理,可以配置代理缓存
location / {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
}
5.启用压缩:启动Gzip压缩减少传输大小,提高加载速度
http {
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    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;
}
6.优化缓冲区设置:调整缓冲区设置以适应你的负载
http {
    client_body_buffer_size 10K;
    client_max_body_size 8m;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 4k;
}
7.启动连接重用:nginx启用keeplive连接来减少tcp握手的开销
http {
    keepalive_timeout 65;
    keepalive_requests 100;
}
8.限制连接请求速率:限制客户端的请求速率,防止滥用。
http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
}

server {
    location / {
        limit_req zone=mylimit burst=5;
    }
}
9.日志优化:调整日志的级别
http {
    access_log /var/log/nginx/access.log combined buffer=16k flush=5m;
    error_log /var/log/nginx/error.log warn;
}
10.配置防盗链
server_tokens off;  #禁止浏览器新爱是nginx版本号
11.隐藏nginx版本
server_tokens off;  #禁止浏览器新爱是nginx版本号

总结

  1. CPU亲和、worker进程数默认和cup核心数相同。

  2. 调整每个worker进程的最大链接数,默认是1024,调整25532

  3. 开启tcp长连接,以及长连接超时时间keepalived

  4. 开启文件传输压缩gzip

  5. 开启静态文件expires缓存

  6. 调整缓冲区设置适应负载

  7. 隐藏nginx版本号

  8. 配置防盗链

  9. 限制请求速率等等

动物装饰