nginx 优化
- 基础配置优化
- 缓存配置优化
基础配置优化
CPU亲和性优化 : 每一个Nginx的worker线程都能固定到具体的CPU核心上Nginx模型优化 :kernel 2.6后使用epoll, 单个线程的最大连接数worker_connections配置的更合理一点Nginx传输方式优化 : 零拷贝,HTTP配置模块中添加一个sendfile on,实现静态文件的内核态到用户态的零拷贝Nginx文件压缩优化 :gzip on负责打开后端的压缩功能
nginx master 进程主要用来管理 worker 进程,包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动重新启动新的 worker 进程。
缓存配置优化
- 浏览器缓存优化
- 代理缓存优化
HTTPS SSL缓存优化KV服务缓存优化等
浏览器缓存
浏览器缓存通常是缓存到客户端(如:浏览器、客户端 app )
可以把静态元素,比如用户请求的图片、CSS 、JS 等元素缓存到客户端。这种缓存可以通过 Nginx 配置中的 expires 配置项进行设置,expires 后面可以加具体的时间,也可以加对应的特定意义的数值,比如 -1 表示永久缓存,max 设置最大周期缓存(默认缓存周期为 10 年),需要做具体的时间的设置可以写入具体的时间周期,比如一个小时或是一天
HTTPS 配置优化
在 Nginx 中配置 ssl_session_cache
配置中分配 Nginx 在处理 SSL 会话所需要开辟的共享内存的空间为 10 MB,第二个参数就是设置 SSL SessionKey 的超时时间,这里设置的为 10 分钟,也就是每隔 10 分钟需要重新再进行一次建联,这是一个在服务端的超时时间。
打开文件缓存
open_file_cache 具体的设置策略,max 表示最大能够缓存的文件个数,inactive 表示最少的用户使用次数。我们结合看一下,这个表示在 20 秒内最小需要使用两次。如果没有使用的话,就会把元数据删掉,也这就是一个淘汰元数据的策略。
open_file_cache_valid 是设置主动更新和检查的时间,表示每隔 30 秒检查缓存文件的元信息有没有对应的更新,如果有更新就需要去做对应的更新,它是一个更新的策略
代理缓存优化
1 | proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60mlocation / { |
通过 Nginx 作代理,可以支持实现动静态的分离,静态元素直接交给 Nginx 来处理,再把后端动态数据适当作缓存。通常做这种代理+缓存的架构,是能有效的提高整体网站的访问并发性能。
缓存使用注意问题
对于缓存的整体使用,之前说的缓存越多越好,越靠前越好,命中率越高越好
- 文件更新策略问题
- 缓存命中率失败给后端造成的瞬间压力
- 多节点缓存一致性