“Nginx高性能Web服务器详解笔记”的版本间的差异

来自Alex's wiki
跳转至: 导航搜索
5.1由ngx_http_gzip_module模块处理的9个指令
5.1由ngx_http_gzip_module模块处理的9个指令
第60行: 第60行:
 
;(2)gzip_buffers 指令:<font style="background:lightgray"> gzip_buffers 32 4k | 16 8k;  </font> 默认情况下 number * size的值为128,其中size为系统一页的大小。为4KB或8KB
 
;(2)gzip_buffers 指令:<font style="background:lightgray"> gzip_buffers 32 4k | 16 8k;  </font> 默认情况下 number * size的值为128,其中size为系统一页的大小。为4KB或8KB
 
;(3)gzip_comp_level 指令:设置压缩程度,从1到9。1表示压缩程度最低(这也是默认设置),压缩效率最高
 
;(3)gzip_comp_level 指令:设置压缩程度,从1到9。1表示压缩程度最低(这也是默认设置),压缩效率最高
;(4)gzip_disable 指令:语法为 ''gzip_disable regex ...;''  <font style="background:lightgray"> gzip_disable  MSIE [1-6]\.;  </font>
+
;(4)gzip_disable 指令:语法为 ''gzip_disable regex ...;''  如: <font style="background:lightgray"> gzip_disable  MSIE [1-6]\.;  </font>
 
;(5)gzip_http_version 指令:
 
;(5)gzip_http_version 指令:
 
;(6)gzip_min_len 指令:
 
;(6)gzip_min_len 指令:

2016年10月17日 (一) 09:56的版本

第四章 Nginx服务器的高级配置

NGINX高性能Web服务器详解(读书笔记)

4.1针对IPv4内核的7个参数优化配置

参考:高并发情况下Linux服务器内核配置

相应的配置文件在 /etc/sysctl.conf
使用 #/sbin/sysctl -p 命令使修改生效:

#添加:
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4. tcp_synack_retries = 1
net.ipv4. tcp_syn_retries = 1
#修改
net.ipv4.tcp_max_syn_backlog = 262144


4.2针对CPU的Nginx配置优化的2个指令

worker_processes 设置成内核的倍数。针对2核CPU,建议为2或4
worker_processes 4;
worker_cpu_affinity 若是4核CPU,则:
worker_cpu_affinity 0001 0010 0100 1000;

4.3与网络连接相关的4个指令

keepallive_timeout
如:keepalive_time 60 50;
send_timeout
如:send_timeout 10s; 如果这个时间之后客户端没有任何活动,Nginx服务器会关闭
client_header_buffer_size
如果发现 400 错误,有很大一部分原因是客户端的请求头部过大造成的
client_header_buffer_size 32k;
multi_accept
配置Nginx尽可能多的接收客户端的连接请求: multi_accept on;

4.4与事件驱动相关的8个指令

(1)use指令
use epoll;
(2)worker_connections指令
每个Worker允许最大同时连接数。 worker_connections 51200;
由此可知,服务器最大连接数为: Client = worker_processes * worker_connections / 2
同时可以设置进程可以打开最大文件句柄数量: #echo "2390251" > /proc/sys/fs/file-max; sysctl -p
(3)worker_rlimit_sigpending指令
worker_rlimit_sigpending 1024;
用于设置Linux 2.6.6版本之后Linux平台的事件信号队列长度上限。它主要影响事件驱动模型中rtsig模型可以保存的最大信号数。
(4)devpoll_changes和devpoll_events指令
用于设置在/dev/poll事件驱动模型下Nginx服务器可以与内核之间传递事件的数量。前者设置传递给内核的事件数量,后者设置从内核获取的事件数量。默认值为32
(5)kqueue_changes和kquue_events指令
用于设置在kqueue事件驱动模型下Nginx服务器可以与内核之间传递事件的数量。前者设置传递给内核的事件数量,
后者设置从内核获取的事件数量。默认值为512.
(6)epoll_events指令
用于设置在epoll事件驱动模型下Nginx服务器可以与内核之间传递事件的数量。默认值为512.
注意:与其他事件驱动模型不同,epoll模型下Nginx服务器向内核传递事件的数量和从内核获取的事件数量是相等的。所以,
不存在epoll_changes指令。
(7)rtsig_signo指令
用于设置rtsig模式使用的2个信号中的第一个,第二个信号是在第一个信号的编号上加1.默认的第一个信号设置为:
SIGRTMIN+10
(8)rtsig_overflow_*指令
该指令有3个具体的指令,rtsig_over_events、rtsig_over_test、rtsig_over_threshold指令。这些指令用来控制当rtsig模式中信号队列溢出时Nginx服务器的处理方式。
rtsig_over_events:指定队列溢出时使用poll库处理的事件数,默认值为16.
tsig_over_test:指定poll库处理完第几件事后将清空rtsig模型使用的信号队列,默认值为32.
tsig_over_threshold:指定rtsig模式使用的信号队列中的事件超过多少时就需要清空队列了。该指令只对Linux 2.4.x以下版本有效。

第五章 Nginx服务器的Gzip压缩

5.1由ngx_http_gzip_module模块处理的9个指令

(1)gzip 指令
gzip on | off; 默认为off,只有该指令设置为on时,下列各指令设置才有效。
(2)gzip_buffers 指令
gzip_buffers 32 4k | 16 8k; 默认情况下 number * size的值为128,其中size为系统一页的大小。为4KB或8KB
(3)gzip_comp_level 指令
设置压缩程度,从1到9。1表示压缩程度最低(这也是默认设置),压缩效率最高
(4)gzip_disable 指令
语法为 gzip_disable regex ...; 如: gzip_disable MSIE [1-6]\.;
(5)gzip_http_version 指令
(6)gzip_min_len 指令
(7)gzip_proxied 指令
(8)gzip_types 指令
(9)gzip_vary 指令

两核CPU/4G内存的配置示例:

       gzip on;
       gzip_min_length  1k;
       gzip_buffers     4 16k;
       gzip_http_version 1.1;
       gzip_comp_level 2;
       gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
       gzip_vary on;
       gzip_proxied   expired no-cache no-store private auth;
       gzip_disable   "MSIE [1-6]\.";