redis引出的端口连接不释放,添加快速回收内核参数
背景:
1.创建redis-cluster集群
2.在执行 一个写好的脚本时,内容是替换端口,trib构建集群
[root@zabbix-server redis_cluster_deploy]# sh demo_cluster_trib.sh 3406 cn
Creating cluster
[ERR] Sorry, can't connect to node 192.168.0.84:23406
解决:
1.到提示的机器上收到起从库,但是起不来
2.看报错提示,有端口被占了
3323:M 03 Sep 11:47:13.987 * Node configuration loaded, I'm 619219efea53aaa07361ffababe03f91fe83e87e
3323:M 03 Sep 11:47:13.987 # Creating Server TCP listening socket 0.0.0.0:33406: bind: Address already in use
3.看端口有个time_wait 一直占用,不结束
[root@localhost ~]# netstat -lnutpa |grep 3406
tcp 0 0 0.0.0.0:13406 0.0.0.0:* LISTEN 336/redis-server 0.
tcp 0 0 0.0.0.0:3406 0.0.0.0:* LISTEN 336/redis-server 0.
tcp 0 0 192.168.0.84:23381 192.168.0.51:34068 ESTABLISHED 8066/redis-server 0
tcp 0 0 127.0.0.1:42630 127.0.0.1:3406 TIME_WAIT - tcp 0 0 127.0.0.1:41810 127.0.0.1:3406 TIME_WAIT -
tcp 0 0 127.0.0.1:40994 127.0.0.1:3406 TIME_WAIT -
tcp 0 0 127.0.0.1:40992 127.0.0.1:3406 TIME_WAIT -
tcp 0 0 127.0.0.1:42632 127.0.0.1:3406 TIME_WAIT -
tcp 0 0 192.168.0.84:33406 192.168.0.82:3396 TIME_WAIT -
tcp 0 0 127.0.0.1:41812 127.0.0.1:3406 TIME_WAIT
4.经调查 需要在内核加几行参数,目的使系统的TIMEWAIT重用和快速回收
编辑内核文件/etc/sysctl.conf,加入以下内容:
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 =30 修改系默认的 TIMEOUT 时间;表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
然后执行 /sbin/sysctl -p 让参数生效.
/etc/sysctl.conf是一个允许改变正在运行中的Linux系统的接口,它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。
之后就可以顺利启动了

浙公网安备 33010602011771号