章节思维导图

Nginx高性能优化配置实战_Nginx

简介

Nginx是一个高性能的HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。Nginx的特点是:占有内存少,并发能力强。

Nginx专门为性能优化而开发,性能是最重要的考量,非常注重效率,事实上Nginx的并发能力在同类型的网页服务器种表现较好,能够支持高达50000个并发连接响应数。

CPU亲和性

CPU通常是多核的,并可以通过超线程来虚拟更多核数。

亲和力就是为多核CPU需做到让Nginx服务冲分的配合使用,从而提高性能。

Nginx运行时会启用1个master进程及多个worker进程,worker进程负责处理请求,

如果worker进程在多核CPU中发生频繁的调度就会损耗性能,

在这种情况下,希望减少这种频繁调度。

让每一个Nginx的worker线程都能够固定到具体的CPU核心上,就需要配置Nginx的CPU亲和性来解决这个问题。

配置方式:

1.推荐直接将配置项设置成auto(worker_cpu_affinity

即采用了Nginx推荐的CPU绑核策略方式。

​2.手动绑定,将worker线程数量与CPU核心数一一绑定方式设置

设置成auto Nginx会自动识别并按照策略来分配worker线程和CPU。

Nginx高性能优化配置实战_服务器_02

IO流事件模型

Linux系统下一切皆文件

在Nginx处理请求时,每一个请求都会产生处理请求的描述符。

在Nginx处理大规模请求的时候,为了提高并发效率需要采用异步非阻塞模型。

epoll本身是以异步非阻塞模型来处理请求流中的事件流。

注意:并不是所有的Linux操作系统都可以使用epoll,它是在kernel2.6版本以后提出的早期内核使用的select/epoll模型,select模型比epoll模型性能要低很多。

epoll相比select的优势

•epoll处理事件流模型十线程安全的

•epoll跟select模型相比

调用fd文件描述符时使用了mmap共享用户和内核的部分空间,提高了效率

•epoll是基于事件驱动的

避免频繁扫描文件描述符,可以直接调用callback回调函数,效率更高

•取消了select模型里面单个进程能够监视的文件描述符的数量

存在的最大限制(1024)

Nginx高性能优化配置实战_代理服务器_03

零拷贝

Nginx会在HTTP中默认添加一个sendfile on,它便是一个零拷贝

所谓零拷贝并不代表不拷贝,而是说它做到了文件的内核态到用户态的零拷贝

Nginx高性能优化配置实战_Nginx_04

文件压缩

主要通过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_Enconding响应头字段

通知接收方响应使用了gzip压缩

•application/vnd.ms-fontobject image/x-icon;gip压缩类型

•gzip_disable "msie6";关闭IE6的压缩