linux保留端口避免被随机分配占用方式(ip_local_reserved_ports)

 更新时间:2025年09月19日 09:18:32   作者:IT杂人  
文章分析Nginx服务器偶发端口冲突问题,指出因端口复用机制导致的连接数虚高现象,提出通过扩大端口范围、保留特定端口及分离Nginx与应用服务部署的解决方案,强调端口动态分配特性与实际资源消耗的差异

现象

nginx所在服务器上的应用偶现规划的端口被探测到激活,从而导致被ng分配请求,但却给不了正常的数据;

同时:

  • 通过命令netstat -anlp|wc -l 显示有大量tcp连接,对open files值也有参考意义
  • 通过命令netstat -anlp|awk '{print $4}'|sort|uniq -c|wc -l显示有大量端口占用,统计第四列表示本地使用的端口(会重复)

解决1:范围增大和保留端口不被占用

TCP/IP协议栈从ip_local_port_range中随机选取源端口时,会排除ip_local_reserved_ports中定义的端口,因此不会出现端口被占用导致服务无法启动的问题。

使用net.ipv4.ip_local_port_range参数,规划出一段端口段预留作为服务的端口,这种方法是可以解决当前问题,但是会有个问题,端口使用量减少了,当服务器需要消耗大量的端口号的话,比如反代服务器,就存在瓶颈了。

判断是否规划的端口在随机分配端口(也可增加范围)

sysctl -a |grep net.ipv4.ip_local_port_range

默认:

net.ipv4.ip_local_port_range = 32768 60999

当长连接比较多时,可适当增加此参数

如果端口在随机分配端口之内

则写如下配置,以保留不会被分配。

vim /etc/sysctl.conf

#支持“-”写端口段:33000-33100
net.ipv4.ip_local_reserved_ports = 35080

保存后,执行命令生效:sysctl -p

解决2:把ng服务与应用服务分开部署

当ng与需要反代的服务放一起时,会随机分配端口与反代服务映射,而因为都在同一台服务器,并发高时,此端口会被占用;

最大可用端口数

IP的端口是双字节,也就是256256-1, 256256对计算机来说就是0,因为此最大的端口号是65535而不是65536,当然端口数值是0-65535,数量是65536个,但0一般不用,故而我们通常都说65535,而且端口号最大也是65535,所以我们都说端口是65535

如何突破端口限制

每个机器还可以装多个网卡,在极端情况下,是可能通过增加网卡IP的形式来突破。

根据tcp连接四要素:

【源IP、源Port、目标IP、目标Port】,机器自身系统无关,在交互时以网卡标识。

实际几乎大多情况

端口不是说占用了就一直是你的了,你不用了还可以释放,释放后别的程序还能接着使用,所以,动态利用之下,很难把端口占完的。

其二、要分清端口和连接。一个端口可以有若干个连接,如nginx,普通linux上,一个80端口就能并发10万+的连接,极限情况下,可以近百万。所以,由于端口复用,其实并不会用到那么多端口。

所以,65536个端口用完的话基本上不会出现。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • ubuntu下编译安装opencv的方法

    ubuntu下编译安装opencv的方法

    今天小编就为大家分享一篇关于ubuntu下编译安装opencv的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 在APACHE环境下配置下载服务器的注意事项

    在APACHE环境下配置下载服务器的注意事项

    这篇文章主要介绍了在APACHE环境下配置下载服务器的注意事项,需要的朋友可以参考下
    2016-08-08
  • 如何修改linux操作系统下文件颜色提示

    如何修改linux操作系统下文件颜色提示

    修改Linux下文件颜色提示的方法:拷贝`DIR_COLORS`文件到home目录,编辑并修改颜色代码,保存后使用`eval dircolors ~/.dircolors`使更改生效,如果`ls`命令没有变化,可以使用`ls --color=auto`,在`~/.cshrc`中添加别名alias ls='ls --color=auto'
    2025-01-01
  • Linux deb包解压、修改等操作方法代码示例

    Linux deb包解压、修改等操作方法代码示例

    这篇文章主要介绍了Linux deb包解压、修改等操作方法代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Linux 中_exit和exit的区别

    Linux 中_exit和exit的区别

    这篇文章主要介绍了Linux 中_exit和exit的区别的相关资料,需要的朋友可以参考下
    2017-03-03
  • 可以提高效率的十个Linux命令别名汇总

    可以提高效率的十个Linux命令别名汇总

    这篇文章主要给大家介绍了关于可以提高效率的十个Linux命令别名,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • Linux使用Systemd设置程序开机自启动的具体教程

    Linux使用Systemd设置程序开机自启动的具体教程

    Systemd是Linux系统中的初始化系统,旨在提高启动速度和效率,它通过并行启动服务、按需加载、cgroups管理进程、自动挂载管理等方式优化启动过程,本文给大家介绍了Linux系统中使用Systemd设置程序开机自启动教程,需要的朋友可以参考下
    2025-05-05
  • Linux下connect超时处理(总结)

    Linux下connect超时处理(总结)

    这篇文章主要介绍了Linux下connect超时处理(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • linux用户和组命令实例分析【切换、添加用户、权限控制等】

    linux用户和组命令实例分析【切换、添加用户、权限控制等】

    这篇文章主要介绍了linux用户和组命令,结合实例形式分析了Linux系统切换、添加用户、权限控制等相关命令与使用技巧,需要的朋友可以参考下
    2020-03-03
  • APACHE 配置文件中文版 httpd.conf FOR Apache 2.2.13

    APACHE 配置文件中文版 httpd.conf FOR Apache 2.2.13

    APACHE配置文件中文版 httpd.conf FOR Apache 2.2.13 ,综合网上2.0版本的翻译,加入自己的理解,补充完善。
    2009-11-11

最新评论