当处理Linux操作系统 例如:vsftp 很慢 应用文件接口 积压时,要看操作系统相关网络连接 具体看什么用什么命令
| 关注点 | 原因说明 |
|---|---|
| 连接状态统计(如 ESTABLISHED、TIME_WAIT、CLOSE_WAIT) | 判断连接是否积压、是否大量未释放 |
| 连接端口和IP分布 | 判断是否有异常请求或攻击、是否被特定主机拖慢 |
| 队列积压(recv-q / send-q) | 应用是否处理不及时、内核缓冲区积压 |
| vsftpd监听情况 | 是否在监听期望端口,是否进程正常 |
| 连接速率、丢包、延迟 | 判断网络是否稳定 |
| netfilter/iptable 限流 | 是否有防火墙规则影响了网络吞吐 |
-------------------------------------------------------------------------------------
1、 ss -s:连接状态总览
看 estab(建立连接)、timewait 是否异常多。
-------------------------------------------------------------------------------------
2、ss -tan:查看TCP连接详情
ss -tan | awk '{print $1}' | sort | uniq -c
可以统计各个状态数量,如:
-
ESTABLISHED -
TIME_WAIT -
CLOSE_WAIT
如 TIME_WAIT 巨多,可能是连接频繁建立/关闭或没有复用。
-------------------------------------------------------------------------------------
3、ss -tna | grep ':21 ' | wc -l:看vsftpd连接数(21端口)
可换成其他端口:如 :80 :443 :8080
-------------------------------------------------------------------------------------
4、netstat -antp:老旧但好用,含进程信息
netstat -antp | grep ':21'
看是否有大量 CLOSE_WAIT、SYN_RECV、TIME_WAIT 状态。
-------------------------------------------------------------------------------------
5、lsof -i :21:看哪个进程占用vsftp端口
ss -ltnp
-------------------------------------------------------------------------------------
6、ss -ltnp:看当前监听端口及进程
ss -ltnp
-------------------------------------------------------------------------------------
7、watch -n 1 'ss -s':实时观察连接状态变化
watch -n 1 'ss -s'
-------------------------------------------------------------------------------------
8、sar 网络监控(需安装 sysstat)
sar -n DEV 1 5
可以查看实时的网卡收发包速率,判断是否网络压力大。
| 现象 | 可能问题 | 解决建议 |
|---|---|---|
| TIME_WAIT 过多 | 连接频繁,未复用 | 开启 tcp_tw_reuse 和 tcp_tw_recycle(注意副作用) |
| CLOSE_WAIT 多 | 应用没有关闭连接 | 查看程序逻辑、修复关闭连接的代码 |
| ESTABLISHED 多 | 并发高或连接未释放 | 查看是否存在僵尸连接 |
| SYN_RECV 多 | 可能被攻击 | 增加 backlog,启用 SYN cookie |
| recv-q 大 | 应用处理慢 | 优化程序逻辑、调整 socket 缓冲区 |
| 某IP连接超多 | 攻击或异常客户端 | 使用 iptables 临时封堵 IP |

浙公网安备 33010602011771号