在Rocky Linux中使用ss
(Socket Statistics)命令监控网络连接时,我通常会结合以下实践经验和参数组合:
-
基础场景
ss -tunlp
可同时查看TCP/UDP监听端口及进程信息,这对排查服务占用端口特别有效。我曾遇到Nginx未启动却显示端口占用的情况,用该命令快速定位到残留的Docker容器进程。
-
状态过滤技巧
通过ss state TIME-WAIT
筛选特定状态连接。某次服务器出现6万+ TIME-WAIT连接导致端口耗尽,结合ss -s
统计发现需调整net.ipv4.tcp_tw_reuse
内核参数。
-
进程关联分析
使用ss -tp
时需sudo权限才能显示完整进程名,这点容易忽略。曾遇到显示nginx
却实际是自定义编译的/openresty进程,通过sudo ss -tp
才准确显示二进制路径。
-
性能挑战
在10万+连接的Kubernetes节点上,ss
执行延迟明显。改用ss -nt
关闭DNS解析,并通过awk '{print $5}' | cut -d: -f1 | sort | uniq -c
快速统计IP连接数,避免完整输出导致的卡顿。
-
容器网络调试
调试Calico网络时,nsenter -n ss -t
比docker exec
更直接查看容器网络栈。曾发现容器大量FIN-WAIT2状态,最终追踪到Java应用未正确关闭连接。
-
防火墙联动
当ss
显示连接但无法通信时,用ss -o
查看TCP定时器信息。某次AWS环境MTU问题导致重传超时,通过ss -eionpt
发现retrans字段持续增长,最终调整MTU解决。
关键挑战在于海量连接时的信息筛选和性能平衡。建议将常用命令封装成alias ssmon='ss -ntp state established'
,并定期用watch -n 5 ss -s
监控连接状态趋势。