Linux TCP自连接问题
【参考文章】:net.ipv4.ip_local_port_range 的值究竟影响了啥
【参考文章】:Linux内核参数优化
最近卸载MySQL服务偶尔会遇到MySQL端口自连接问题。导致MySQL服务卸载失败,需要手动 kill 自连接进程,然后才可以进行卸载操作。
什么是自连接问题?
自连接就是自己连接自己的现象。当我们去连接一个正在监听的端口时,系统自动为我们分配一个临时端口去进行连接,这样就有可能分配到正在监听的端口号,然后出现自己连接自己的问题。
1. 临时端口号
当在服务器上了启动 socket 去连接某个IP的端口号时,系统会随机分配一个临时端口去连接目标 socket 。
临时端口号的范围可以进行设置。
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range=1024 65535 # 表示的就是临时端口范围,默认范围是 1024-65535,
好像支持一个端口段的设置,没有找到多个端口段的设置方式。
我按照默认的配置方式,设置了多个端口段 (比如:1024 3306 3307 65535)我是瞎蒙的,经测试发现只有第一个端口段生效了,所以暂时认为只支持一个端口段
2. 预留端口号
预留端口号就是给第三方组件预留的端口号,在分配临时端口时不会分配该端口。
服务器内核版本要大于2.6.18-164,否则不支持该参数
vim /etc/sysctl.conf
net.ipv4.ip_local_reserved_ports=3306 #预留端口号设置
支持多个端口段配置
net.ipv4.ip_local_reserved_ports=3306,3308-3310,3312
如果文章对您有所帮助,可以点一下推荐