三、与网络连接相关的配置的4个指令

keepalive_timeout指令用于设定Nginx服务器与客户端保持连接的超时时间。这个指令支持2个选项,中间用空格隔开,第一个选项制定客户端保持活动的超时时间,在这个时间之后,服务器会关闭此链接;第二个选项可选,其制定了使用keep-alive消息头保持活动的有效时间,针对特殊浏览器。可以根据服务器访问数量、处理速度及网络情况方面考虑:

keepalive_timeout 60 50;

该设定表示Nginx服务网与客户端保持活动的时间是60s,60s后服务器与客户端端口连接;使用keep-alive消息头保持与客户端的某些浏览器的连接时间为50s,50s之后浏览器主动与服务器断开连接。

send_timeout指令用于设定Nginx服务器响应客户端的超时时间,这个超时间仅针对2个客户端和服务器之间建立连接后,某次活动之间的时间。如果找个时间后客户端没有任何活动,Nginx服务器将会关闭此链接。此指令的设定需要考虑服务器访问数量和网络等方面:

send_timeout 10s;

该设置表示Nginx服务器与客户端建立连接后,某次会话中服务器等待客户端响应超过10s,就自动关闭连接。

client_header_buffer_size指令用于设置服务器允许的客户端请求头部的缓冲区大小,默认设定为1KB。此指令的赋值可以根据系统分页大小来设定,分页大小使用以下命令取得:

getconf PAGESIZE

一般建议将值设定为以下:

client_header_buffer_size 4k;

multi_accept指令用于配制Nginx服务器是否尽可能多地设定客户端的网络连接请求,默认为off

四、与事件驱动模型相关的8个指令

use指令用于指定Nginx服务器使用的时间驱动模型。

worker_connections指令用于设置服务器的每一个工作进程允许同时连接客户端的最大数量,其语法为:

worker_connections number;

其中number为设定的最大数量。结合worker_processes指令,可以计算出Nginx服务器允许同时连接的最大客户端数量Client=worker_processes*worker_connections/2。
笔者在使用过程中遇到如下报错,根据报错信息推测可能是Nginx服务器的最大访问连接设置小了。此指令就是Nginx服务器能够接受的最大访问量,其中包括前端用户也包括其他连接,这个值理论上等于此指令的值与他允许开启的工作进程最大数的乘积,此指令一般设定为65535:

请输入图片描述

worker_connections 65535;

此指令的赋值与Linux操作系统中进程可以打开的文件句柄数量有关系。笔者遇到在修改以上参数赋值后,Nginx服务器报错如下:

请输入图片描述

原因是Linux系统中有一个系统指令open file resource limit控制了可以打开文件的句柄数量。worker_connections指令的赋值当然不能超过该值,可以使用以下命令查看Linux系统中该值的大小:

cat /proc/sys/fs/file-max
1613552

ulimit -n
1024

通过以下命令将该指令设定为2390251:

echo "2390251" > /proc/sys/fs/file-max; sysctl -p

worker_rlimit_sigpending指令用于设置linux-2.6.6-mm2版本之后Linux平台的事件信号队列长度上限。语法如下:

worker_rlimit_sigpending limit;

worker_rlimit_sigpending 1024;

devpoll_changes和devpoll_events指令用于设置在/dev/poll事件驱动模式下Nginx服务器可以与内涵之间传递事件的数量,前者设置传递内核的事件数量,后者设置从内核获取的事件数量,其语法:

devpoll_changes number;

devpoll_events number;

默认值均为32。

kqueue_changes和kqueue_events指令用于设置在kqueue事件驱动模式下Nginx服务器可以与内核之间传递事件的数量,前者设置传递内核的事件数量,后者设置从内核获取的事件数量,其语法:

kqueue_changes number;
kqueue_events number;

默认值为512.

epoll_events指令用于设定在epoll事件驱动模式下Nginx服务器可以与内核之间传递事件的数量,其语法为:

epoll_events number;

默认值为512。

rtsig-signo指令用于设定rtsig模式使用的2个信号中的一个,第二个信号是再第一个信号的编号上加1,语法为:

rtsig-signo signo

默认的第一个信号设置为SIGRTMIN+10



最后修改:2021 年 02 月 04 日
如果觉得我的文章对你有用,请随意赞赏