netstat可直接查Web端口监听与连接状态:用netstat -tuln | grep ':80'确认监听,sudo netstat -tulnp | grep ':443'查进程;netstat -tn | grep ':80' | wc -l统计总数,配合awk按ESTABLISHED等状态分组分析负载与异常。

直接用 netstat 查 Web 服务器端口(比如 80、443)的连接情况,核心是看监听状态和活跃连接数,再结合状态分布判断负载或异常。
确认 Web 服务是否在监听指定端口
运行以下命令检查 Nginx、Apache 或其他 Web 服务是否真正绑定了端口:
- netstat -tuln | grep ':80' —— 查 80 端口监听(HTTP)
- netstat -tuln | grep ':443' —— 查 443 端口监听(HTTPS)
- 加 -p 参数可显示进程名(需 root 权限):sudo netstat -tulnp | grep ':443'
输出中若看到 0.0.0.0:80 或 :::443,说明服务正在监听所有地址;若只有 127.0.0.1:8080,则仅本地可访问,外网无法连入。
统计当前活跃连接数量及状态分布
Web 请求建立后会进入不同 TCP 状态,通过状态分布能快速识别潜在问题:
- netstat -tn | grep ':80' | wc -l —— 统计所有 80 端口的 TCP 连接总数
- netstat -tn | grep ':443' | awk '{print $6}' | sort | uniq -c | sort -nr —— 按状态(如 ESTABLISHED、TIME_WAIT、CLOSE_WAIT)分组计数
重点关注:
– ESTABLISHED 数量高,说明并发请求多,属正常;
– CLOSE_WAIT 持续增长,大概率是后端应用未主动关闭 socket,需检查代码或配置;
– TIME_WAIT 大量存在是正常现象(Linux 默认保持 60 秒),但若远超并发量(如 >5000),可考虑优化内核参数或启用端口复用。
实时观察连接变化趋势
对高流量站点,静态快照不够,需动态监控:
- watch -n 2 'netstat -tn | grep :443 | wc -l' —— 每 2 秒刷新一次 HTTPS 连接总数
- watch -n 3 'netstat -tn | grep :80 | awk '\''{print $6}'\'' | sort | uniq -c' —— 实时看各状态数量波动
搭配系统负载(uptime)、CPU 使用率(top)一起看,能区分是网络层瓶颈还是应用层处理慢。
定位占用端口的进程并进一步排查
当发现端口被占但没显示进程名,或想确认是不是 Web 服务本身在用:
- 先查端口占用:sudo netstat -tulnp | grep ':80'
- 若 PID 显示为
-或无结果,尝试:lsof -i :80 或 ss -tulnp | grep ':80'(更现代、更可靠) - 拿到 PID 后查进程详情:ps -p PID -o pid,ppid,user,%cpu,%mem,cmd
特别注意:有些容器化部署中,Web 服务跑在 Docker 内,netstat 在宿主机可能看不到完整进程路径,此时优先用 docker ps + docker exec -it 容器ID netstat -tuln 进入容器查。

















