0

0

net.ipv4.ip_local_port_range 调到最大后还是端口耗尽的隐藏进程

舞夢輝影

舞夢輝影

发布时间:2026-01-23 19:35:23

|

534人浏览过

|

来源于php中文网

原创

端口耗尽主因常是TIME_WAIT堆积、短连接风暴或隐藏进程占端口,而非ip_local_port_range过小;应使用ss -tulnp、lsof、/proc/net/{tcp,tcp6}精准排查,启用tcp_tw_reuse、慎调fin_timeout,并检查systemd用户实例、残留容器及内核socket异常。

net.ipv4.ip_local_port_range 调到最大后还是端口耗尽的隐藏进程

端口耗尽问题不一定是 net.ipv4.ip_local_port_range 设置不够大,更可能是系统中存在大量未释放的 TIME_WAIT 连接、短连接风暴、或被忽略的后台进程持续占着端口(尤其是非 root 进程绑定固定端口后长期不退出)。

检查真实端口占用情况,别只看 netstat -an

默认 netstatss 不显示 PID 和进程名,容易漏掉“隐身”进程:

  • ss -tulnp(需 root 权限)查所有监听和已建立连接的进程,重点关注 :*:*:*:* 类型的监听和大量 TIME-WAIT 状态
  • lsof -i -P -n | grep ':<port>'</port> 查特定端口归属,比如怀疑某端口被霸占时精准定位
  • cat /proc/net/{tcp,tcp6} 手动解析(十六进制端口号需转换),适合排查内核级或容器逃逸类异常进程

TIME_WAIT 不是敌人,但配置不当会雪上加霜

调大本地端口范围只是治标。Linux 默认 net.ipv4.tcp_fin_timeout = 60,而 TIME_WAIT 持续 2×MSL(通常 60 秒),若每秒新建 1000+ 短连接,60 秒内就可能占满 65535 个端口:

阿里云AI平台
阿里云AI平台

阿里云AI平台

下载
  • 启用端口重用:net.ipv4.tcp_tw_reuse = 1(客户端主动发起连接时可复用处于 TIME_WAIT 的端口)
  • 谨慎调低超时:net.ipv4.tcp_fin_timeout = 30(仅对非 NAT 环境安全;NAT 下可能丢包)
  • 禁用回收(不推荐):net.ipv4.tcp_tw_recycle = 0(已在 4.12+ 内核移除,且在 NAT 场景下会导致连接失败)

揪出“隐藏进程”:systemd、容器、孤儿线程

真正耗尽端口的常不是前台服务,而是以下几类:

  • systemd 用户实例残留:执行 loginctl list-users + systemctl --user list-units --state=running,查看是否有崩溃后未清理的用户级服务占着 8080/9000 等常用端口
  • 容器未彻底退出:运行 docker ps -apodman ps -a,检查 Exited 容器是否仍持有网络命名空间(用 nsenter -n -t <pid> ss -tuln</pid> 进入其 netns 查看)
  • 僵尸 socket 或内核模块:极少数情况下,驱动或 eBPF 程序创建的 socket 未正确释放,可通过 cat /proc/net/sockstat 对比 sockets: usedtcp: 行数值是否严重失衡

验证与收尾建议

改完参数后别直接重启,先验证:

  • 确认生效:sysctl net.ipv4.ip_local_port_rangess -s 中 “TCP: time wait” 数量趋势
  • 压力测试对比:ab -n 10000 -c 100 http://127.0.0.1:8080/ 前后分别记录 netstat -an | grep :8080 | wc -l
  • 设为持久:把调整项写入 /etc/sysctl.d/99-custom.conf,避免重启失效

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

447

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

606

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

766

2023.08.10

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

280

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

516

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

417

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

454

2024.04.08

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

42

2026.02.11

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.6万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号