nginx服务器的高级配置

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为最大数量。服务器允许同时连接的客户端最大数量

C l i e n t = w o r k e r p r o c e s s e s w o r k e r c o n n e c t i o n s / 2

一般设置为:

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

猜你喜欢

转载自blog.csdn.net/xielinrui123/article/details/80567189