nginx的系统级的(linux)优化

1、net.core.somaxconn和net.core.netdev_max_backlog
定义每一个端口最大的监听队列的长度,用于调整tcp的并发连接数
linux系统中有net.core.somaxconn参数,默认值时128,这个参数会影响到端口监听队列的长度,也就是说在高并发下回导致请求失效或重传,根据测试,一台性能比较好专一职责的linux系统建议改为
262144
步骤
(1) sudo vi /etc/sysctl.conf
在最下面编辑添加:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.route.gc_timeout = 100
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 262144
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_mem = 94500000 915000000 927000000
保存退出
(2) sudo /sbin/sysctl -p
/sbin/sysctl -w net.core.netdev_max_backlog = 262144
/sbin/sysctl -w net.core.somaxconn=262144
2、net.ipv4.tcp_max_orphans 孤儿套接字
缺省值是8192
系统所能处理不属于任何进程的TCP sockets最大数量(主动关闭端发送了FIN后转到FIN_WAIT_1,这时TCP连接就不属于某个进程了)。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息,dmesg就会看
到”too many of orphaned sockets”。之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击﹐千万不要依赖这个或是人为的降低这个限制(这个值Redhat AS版本中设置为32768,但是很多防火墙修改的时候,建议该值修改为2000)
3、net.ipv4.timestamps 时间戳可以避免序列号的卷绕。
一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。对nginx来说需要将其关掉
值为0(禁用时间戳)
值为1(启用时间戳)
使用该命令使其立马生效:/sbin/sysctl-p
白发渔樵

白发渔樵

发表评论

电子邮件地址不会被公开。 必填项已用*标注