ipv4指令优化以及Invalid argument错误解析linux
2017年08月11日 11:34:05nginx
阅读数:399网络
为了使nginx中ipv4优化参数长久生效,能够将参数设置追加到/etc/sysctl.conf文件中。并发
net.core.netdev_max_backlog = 262144
用于设置内核没法及时处理网络接口收到的数据包时容许发送到队列的最大数据包数目,默认为128(不一样linux系统会存在差别)。tcp
net.core.somaxconn = 262144
用于设置系统同时发起的TCP链接数,数值较小时,没法应付高并发情形,致使链接超时、重传等问题。函数
net.ipv4.tcp_max_orphans = 262144
用于设置最多容许多少TCP套接字不被关联到用户文件句柄。一旦超过该数值,没有关联到文件句柄的TCP套接字将会被复位,同时给出警告信息。在系统内存充足的状况下可增大该值。高并发
net.ipv4.tcp_max_syn_backlog = 262144
用于设置还没有收到客户端确认信息的链接请求的最大值,在系统内存充足的状况下可增大该值。大数据
net.ipv4.tcp_timestamps = 0
用于设置时间戳,赋值为0意味着禁用TCP时间戳的支持。优化
net.ipv4.tcp_synack_retries = 1
用于设置内核放弃TCP链接以前向客户端发送SYN+ACK包的数量,设置的是TCP三次握手中的第二次握手,通常设置为1.spa
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