首页/系统/Linux 运维命令速查/ss -s 与 socket 内存占用
性能与监控48 条

ss -s 与 socket 内存占用

ss -s 汇总当前 socket 数量与内存:连接数暴涨、TIME-WAIT 规模、socket 内存吃紧在这里一眼可见。

Linux 运维命令速查系统更新于 2026-10-13

套接字统计是什么

连接数是端口耗尽、连接排队、内存占用异常这类问题的常见线索。ss -s 直接给出当前套接字的汇总:总量、各状态分布,以及套接字缓冲区的内存占用;加上 -m 还能看到每个连接的内存细节。与内核提供的套接字统计文件互相对照,可以快速判断连接堆积在哪个状态、回收是不是跟不上,比逐个连接翻列表高效得多。

基本信息

适用平台GNU/Linux(iproute2 提供的 ss)
语法ss -s 输出汇总;ss -m 显示内存细节
常用组合ss -tan 按状态统计、ss -lntp 看监听与进程
对照文件/proc/net/sockstat
关键状态LISTEN、ESTABLISHED、TIME-WAIT、SYN-RECV
统计视角只在当前网络命名空间内统计

典型使用场景

  • 判断连接是否堆积在某个状态,定位连接回收问题。
  • 排查端口资源紧张:确认回收中连接的数量规模。
  • 评估套接字内存占用是否是内存压力的来源。
  • 对比压测前后的连接数分布,验证连接池与超时设置。
  • 在容器内查看该命名空间自己的连接状况。

常用写法

常用写法
ss -s                                        # 套接字汇总与内存占用
ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn | head   # 按状态统计
ss -lntp | head                              # 监听端口与对应进程
ss -s; cat /proc/net/sockstat                # 两处数据互相印证
ss -tan state time-wait | wc -l              # 统计回收中的连接数量
ss -tani | head                              # 连接细节,含内存与计时器

状态与指标读法

指标或状态含义判断要点
总计数量当前套接字数量与历史基线对比才能发现问题
LISTEN监听中正常应是固定的一小批
ESTABLISHED已建立连接与并发量、连接池大小相关
TIME-WAIT回收中量大且不下降要考虑端口与内核参数
SYN-RECV半连接大量堆积可能是攻击或对端不回包
内存占用套接字缓冲区突然升高常伴随连接数暴涨
ss 显示的是当前网络命名空间的视角:容器里的数字只反映该容器,排查宿主机问题要在宿主机的命名空间里执行。
只看总数不看状态分布会误判:监听连接多和已建立连接多含义完全不同,前者通常是服务配置问题,后者是流量或连接泄漏问题。
内核的套接字统计文件与 ss 的输出可以互相印证,两者不一致时优先怀疑命名空间不同或统计口径差异,而不是直接认为某一方出错。

易错点

  • 只统计连接总数不看状态分布,把监听连接与已建立连接混为一谈,结论完全错误。
  • 在容器内排查却期待看到宿主机的连接状况,命名空间不同导致数据对不上。
  • 回收中连接大量堆积导致端口资源紧张,却去排查应用连接池;需要同时看内核回收参数与连接复用设置。
  • 用单次快照判断连接泄漏,忽略业务波峰波谷;要在同一时间窗口内多次采样对比。

数据来源与参考

  • man 8 ss
  • man 5 proc(/proc/net/sockstat)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌