1.Linux端口复用参数(套接字中SO_REUSEPORT和SO_REUSEADDR的区别)
参考:https://www.jb51.net/article/139134.htm
SO_REUSEADDR:
如果在一个socket绑定到某一地址和端口之前设置了其SO_REUSEADDR的属性,那么除非本socket与产生了尝试与另一个socket绑定到完全相同的源地址和源端口组合的冲突,否则的话这个socket就可以成功的绑定这个地址端口对。(TCP和UDP之间复用)
SO_REUSEPORT:(Linux在3.9版本后的内核开启)
SO_REUSEPORT允许我们将任意数目的socket绑定到完全相同的源地址端口对上,只要所有之前绑定的socket都设置了SO_REUSEPORT选项。(TCP间也可以复用)
2.TIME_WAIT问题(tw_reuse、tw_recycle)
参考:https://www.cnblogs.com/lulu/p/4149312.html
掘金小册。。。
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 0 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_fin_timeout = 60 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
一般开启tcp_tw_reuse,能够端口复用,关闭tcp_tw_recycle防止NAT出现连接被rst