Nginx 性能优化

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、资源压缩

如果一个静态资源的过大传输起来肯定越慢并且会占用大量带宽因此在项目部署时可以通过Nginx对于静态资源实现压缩传输。Nginx 提供了三个支持资源压缩的模块ngx_http_gzip_module、ngx_http_gzip_static_module、ngx_http_gunzip_module其中ngx_http_gzip_module属于内置模块。

开启资源压缩

http{
    # 开启压缩机制
    gzip on;
    # 指定会被压缩的文件类型(也可自己配置其他类型)
    gzip_types text/plain application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
    # 设置压缩级别越高资源消耗越大但压缩效果越好
    gzip_comp_level 5;
    # 在头部中添加Vary: Accept-Encoding建议开启
    gzip_vary on;
    # 处理压缩请求的缓冲区数量和大小
    gzip_buffers 16 8k;
    # 对于不支持压缩功能的客户端请求不开启压缩机制
    gzip_disable "MSIE [1-6]\."; # 低版本的IE浏览器不支持压缩
    # 设置压缩响应所支持的HTTP最低版本
    gzip_http_version 1.1;
    # 设置触发压缩的最小阈值
    gzip_min_length 2k;
    # 关闭对后端服务器的响应结果进行压缩
    gzip_proxied off;
}

二、使用epoll网络模型

Nginx 是基于多路复用模型实现的但默认的多路复用模型 select/poll 最大只能监听1024个连接而epoll则属于 select/poll 接口的增强版因此切换为epoll 模式能够大程度上提升单个Worker的性能

events {  
    # 使用epoll网络模型  
    use epoll;  
    # 调整每个Worker能够处理的连接数上限  
    worker_connections  10240;  
}  

三、开启CPU亲和机制

在实际项目中进程或线程数往往都会远超出系统CPU的核心数操作系统执行原理本质上是采用时间片切换机制也就是一个CPU核心会在多个进程之间不断频繁切换造成很大的性能损耗。而CPU亲和机制则是指将每个Nginx的工作进程绑定在固定的CPU核心上从而减小CPU切换带来的时间开销和资源损耗

worker_cpu_affinity auto;  

四、调整Worker工作进程

Nginx启动后默认只会开启一个Worker工作进程处理客户端请求而我们可以根据机器的CPU核数开启对应数量的工作进程以此来提升整体的并发量

worker_processes auto;  # 自动根据CPU核心数调整Worker进程数量  

同时也调整每个工作进程能够打开的文件句柄数

worker_rlimit_nofile 20000;  # 每个Worker能打开的文件描述符最少调整至1W以上负荷较高建议2-3W  

五、长连接配置

建议开启HTTP长连接用户减少握手的次数降低服务器损耗

upstream xxx {  
    # 长连接数  
    keepalive 32;  
    # 每个长连接提供的最大请求数  
    keepalived_requests 100;  
    # 每个长连接没有新的请求时保持的最长时间  
    keepalive_timeout 60s;  
}  

六、使用零拷贝技术

零拷贝读取机制与传统资源读取机制的区别

  • 传统方式硬件–>内核–>用户空间–>程序空间–>程序内核空间–>网络套接字
  • 零拷贝方式硬件–>内核–>程序内核空间–>网络套接字
sendfile on; # 开启零拷贝机制  
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx

“Nginx 性能优化” 的相关文章