ss -s 看的是什么
ss 来自 iproute2 套件,ss -s 只输出一段统计摘要:本机当前各类套接字的总数,以及 TCP 处于 estab、closed、orphaned、timewait 等状态的连接数。它比 netstat -s 更聚焦「此刻的连接分布」,是判断连接数是否异常、句柄有没有泄漏的第一眼工具;发现哪一类计数不对,再用 ss -tnp 找出具体连接和对应进程。
基本信息
| 适用平台 | Linux(iproute2),用于替代 net-tools 的 netstat |
|---|---|
| 语法 | ss -s |
| 输出内容 | 套接字总数与 TCP 各状态计数 |
| 权限要求 | 普通用户可读计数;要显示进程名需 root 或查看自身进程 |
典型使用场景
- 服务响应变慢时先看连接是否已经堆积
- 压测过程中观察 estab 与 timewait 的增长趋势
- 怀疑程序泄漏句柄时看 orphaned 是否持续上升
- 调整内核连接相关参数后复测效果
- 快速判断是连接数问题还是后端响应慢的问题
常用示例
常用示例
ss -s # 一屏统计摘要
ss -s | grep -E 'TCP|estab|timewait' # 只看关心的计数行
watch -n 2 'ss -s | grep TCP' # 动态观察增长趋势
ss -s > before.txt; stress-test; ss -s > after.txt # 前后对比
diff before.txt after.txt # 量化变化而不是凭感觉
ss -tnp state established | head # 从摘要下钻到具体连接与进程字段逐项读法
| 字段 | 含义 | 异常信号 |
|---|---|---|
| Total | 各类套接字总数 | 持续单调上升通常意味着泄漏 |
| TCP estab | 已建立的连接数 | 远超业务并发预期说明连接堆积 |
| TCP closed | 已关闭但尚未回收的连接 | 与 estab 一起看,判断回收是否及时 |
| TCP orphaned | 无属主的套接字,进程已退出但连接还在 | 持续增长基本可判定为应用收尾问题 |
| TCP timewait | 主动关闭方留下的等待状态 | 短连接服务上万属正常,需结合连接速率判断 |
TIME-WAIT 上万不一定是故障,短连接服务很常见。先对比连接速率与业务量,再决定要不要调 net.ipv4.tcp_tw_reuse 这类参数。
orphan 套接字增长通常指向应用泄漏(句柄没关),下一步用 ss -tnp 找到归属进程,再结合该进程的连接回收逻辑排查。