预留端口避免占用ip_local_reserved_ports和 ip_local_port_range

ip_local_reserved_ports   ip_local_port_range  

问题描述:

业务遇到这个情况,在重启服务时,出现9502端口被占用而无法启动,非得等该端口释放后才启动成功。

问题分析:

9502端口被该服务器上的客户端随机选取源端口给占用掉了。

解决方案:

使用net.ipv4.iplocalportrange参数,规划出一段端口段预留作为服务的端口,这种方法是可以解决当前问题,但是会有个问题,端口使用量减少了,当服务器需要消耗大量的端口号的话,比如反代服务器,就存在瓶颈了。 最好的做法是将服务监听的端口以逗号分隔全部添加到iplocalreservedports中,TCP/IP协议栈从iplocalportrange中随机选取源端口时,会排除iplocalreservedports中定义的端口,因此就不会出现端口被占用了服务无法启动。

预留作为服务的端口

ip_local_port_range = 1024 65535  

预留端口避免占用

net.ipv4.ip_local_reserved_ports = 1986,9501-9503