Redis Cannot assign request address一案例标题文章

1.背景:

      短链接,系统频繁连接、断开,导致系统大量的TIME_WAIT,导致系统很快用光了端口,新的连接没法绑定端口,redis 报如下错误:

登陆系统发现了大量处于TIME_WAIT 状态的连接:

Redis Cannot assign request address一案例标题文章_第1张图片

2.解决方法:

[root@kk-redis-device01 ~]# sysctl -w net.ipv4.tcp_tw_recycle=1

error: permission denied on key 'net.ipv4.tcp_tw_recycle'

mv /sbin/modprobe  /sbin/modprobe.old

rm -f /sbin/modprobe

ln -s /bin/true /sbin/modprobe

mv  /sbin/sysctl  /sbin/sysctl.old

rm -f /sbin/sysctl

ln -s /bin/true /sbin/sysctl

系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决:

vi /etc/sysctl.conf 编辑文件,加入以下内容:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30 然后执行

/sbin/sysctl -p让参数生效。

参数解释:

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间。

3.引出问题:TIME_WAIT存在的意义?

从网上找到TCP 四次挥手图解:


Redis Cannot assign request address一案例标题文章_第2张图片

4.结论:

内核参数的优化是细节,尤其关注一些比较重要的、需要根据情况来优化自己的参数。

你可能感兴趣的:(Redis Cannot assign request address一案例标题文章)