问题描述:
业务遇到这个情况,在重启服务时,出现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