ubuntu中 ipv4指令优化以及Invalid argument错误解析

为了使nginx中ipv4优化参数长久生效,可以将参数设置追加到/etc/sysctl.conf文件中。

net.core.netdev_max_backlog参数

net.core.netdev_max_backlog = 262144

用于设置内核无法及时处理网络接口收到的数据包时允许发送到队列的最大数据包数目,默认为128(不同linux系统会存在差异)。

net.core.somaxconn参数

net.core.somaxconn = 262144

用于设置系统同时发起的TCP连接数,数值较小时,无法应付高并发情形,导致连接超时、重传等问题。

net.ipv4.tcp_max_orphans参数

net.ipv4.tcp_max_orphans = 262144

用于设置最多允许多少TCP套接字不被关联到用户文件句柄。一旦超过该数值,没有关联到文件句柄的TCP套接字将会被复位,同时给出警告信息。在系统内存充足的情况下可增大该值。

net.ipv4.tcp_max_syn_backlog参数

net.ipv4.tcp_max_syn_backlog = 262144

用于设置尚未收到客户端确认信息的连接请求的最大值,在系统内存充足的情况下可增大该值。

net.ipv4.tcp_timestamps参数

net.ipv4.tcp_timestamps = 0

用于设置时间戳,赋值为0意味着禁用TCP时间戳的支持。

net.ipv4.tcp_synack_retries参数

net.ipv4.tcp_synack_retries = 1

用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量,设置的是TCP三次握手中的第二次握手,一般设置为1.

net.ipv4.tcp_syn_retries参数

net.ipv4.tcp_syn_retries = 1

与net.ipv4.tcp_synack_retries参数类似,用于设置内核放弃TCP连接之前向客户端发送SYN包的数量。

更新生效

/sbin/sysctl -p

使用上述指令,将会是/etc/sysctl.conf中的修改生效。不过此时会提示一个问题:“sysctl: setting key ‘net.core.somaxconn’: 无效的参数”,产生这个错误的原因在于net.core.somaxconn参数的值在inet_listen()函数中设置为不应该超过USHRT_MAX,即65535,而上述配置中使用的262144远远超过了上限,因而提示问题,解决方法如下:

net.core.somaxconn = 65535

指令生效后,会提示如下信息:

root@**-VirtualBox:/home# /sbin/sysctl -p
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 65535
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1

你可能感兴趣的:(nginx)