nginx服务器的高级配置
1、针对ipv4的内核的参数的配置优化
将参数的值最佳到Linux系统的/etc/sysctl.conf文件中,然后使用如下命令使修改生效:
#/sbin/sysctl -p
常用的参数:
1.1、net.core.netdev_max_backlog参数
当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的最大数目。Nginx服务器中定义的NGX_LISTEN_BACKLOG默认值为511。可以调整为:
net.core.netdev_max_backlog = 262144;
1.2、net.core.somaxconn参数
调节系统同时发起的tcp连接数。默认为128。在高并发情况下,可能导致链接超时或者重传问题。
net.core.somaxconn = 262144;
1.3、net.ipv4.tcp_max_orphans参数
设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上。可以防止简单的Dos攻击。如果内存足够,可以增大。
net.ipv4.tcp_max_orphans = 262144;
1.4、net.ipv4.tcp_max_syn_backlog 参数
记录尚未收到客户端确认信息的连接请求的最大值。一般系统内存较大的情况下,可以增大这个参数的赋值。
net.ipv4.tcp_max_syn_backlog = 262144;
1.5、net.ipv4.tcp_synack_retries 参数
该参数用于设置时间戳,避免序列号的卷绕。
net.ipv4.tcp_synack_retries = 0;
1.6、net.ipv4.tcp_synack_retries 参数
net.ipv4.tcp_synack_retries = 1;
1.7、net.ipv4.tcp_syn_retries 参数
net.ipv4.tcp_syn_retries = 1;
2、CPU优化
2.1、worker_processes 指令
设置Nginx服务的进程数。值太大会影响IO效率。一般设置为2或者4
worker_processes 4;
2.2、worker_cpu_affinity 指令
为每个进程分配CPU的工作内核。有几个cpu就设置几组值。
以四核为例来说:
worker_cpu_affinity 0001 0100 1000 0010;
3、网络优化
3.1、keepalive_timeout 指令
用于设置Nginx服务器与客户端保持连接的超时时间
keepalive_timeout 60 50;
3.2、send_timeout 指令
设置nginx服务器响应客户端的超时时间。
send_timeout 10s;
4、与事件驱动模型相关的配置
4.1、use指令,用于指定Nginx服务器使用的事件驱动模型
4.2、worker_connections 指令,设置Nginx服务器的每个工作进程允许同时连接客户端的最大数量。
worker_connections number
number为最大数量。服务器允许同时连接的客户端最大数量
worker_connections 65535;
如果碰到类似于:
worker_connections are more than open file resource limit:1024
的错误,使用:
#cat /proc/sys/fs/file-max
查看open file resource limit的值。
如果小于65535,用
#echo "2390251" > /proc/sys/fs/file-max; sysctl -p
这样就没问题了。
4.3、worker_rlimit_sigpending指令
设置Linux平台的事件信号队列长度上限。
worker_rlimit_sigpending limit
limit为Linux平台事件信号队列的长度上限值。
一般设置为1024。
4.4、epoll_events 指令
设置在epoll 事件驱动模式下Nginx服务器可以与内核之间传递事件的数量。
epoll_changes number
默认值为512