一、基础配置优化
1、CPU亲和性优化
1.1、推荐直接将配置项设置成auto (worker_cpu_affinity),即采用了Nginx推荐的CPU绑核策略方式。
1.2、手动绑定,将worker线程数量与CPU核心数一一绑定方式设置,设置成auto Nginx会自动识别并按照推荐策略来分配work线程和CPU
2、Nginx模型优化
2.1、采用epoll事件模型(异步非阻塞方式)
3、Nginx传输方式优化
3.1、采用0拷贝,Nginx在http中默认添加一个sendfile on,做到了将文件直接从内核态到用户态的零拷贝。
4、Nginx文件压缩优化
4.1、主要通过gzip方式进行设置
gzip on 负责打开后端的压缩功能
gzip_buffer 16 8k 表示设置Nginx在处理文件压缩时的内存空间
gzip_comp_level 6 表示Nginx在处理压缩时的压缩等级,
通常等级越高它的压缩比越大,
根据实际情况来选择合适的压缩比。
gzip_http_version 1.1 表示只对HTTP1.1版本的协议进行压缩
gzip_min_length 256 表示只有大于最小的256字节长度时才进行
压缩如果小于该长度就不进行压缩。
gzip_proxied any 代表nginx作为反向代理时依据后端服务器时
返回信息设置一些gzip压缩策略
gzip_vary on 表示是否发送Vary: Accept_Encoding响应
头字段通知接收方响应使用了gzip压缩
application/vnd.ms-fontobject image/x-icon gzip压缩类型
gzip_disable "msie6" 关闭客户端是IE6的请求的压缩功能
二、缓存优化
1、浏览器缓存优化
1.1、可以把静态元素缓存到客户端,通过Nginx的expires配置菜单进行设置
2、代理缓存优化
2.1、
3、HTTPS SSL 缓存优化
3.1、
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
4、KV服务缓存优化
4.1、
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
缓存优化经验:
1、缓存越靠前越好:能放再客户端的就放在客户端优化,不要放到后端去频繁请求
2、缓存的数据越多越好: 能在本层级缓存的数据越多,就越可以减少对后端的请求
3、缓存的命中率越高越好: 如果命中率不高,同样还是会造成穿透到后端访问,此时还需要考虑将缓存的命中率设置的越高,这时观察指标,会发现缓存效果越优
缓存使用注意的问题: