ss -tn state established | wc -l 是统计当前真实并发连接数最可靠命令,直接由内核过滤established状态,精准高效,无需额外依赖,且避免 grep 误匹配和 -p 参数的性能开销。

直接看 ESTABLISHED 连接数,它最接近真实并发负载;别用 netstat -l 或 ps 数进程,那不是当前活跃连接。
ss -tn state established | wc -l 是当前最可靠的一行命令
这条命令在所有主流发行版(CentOS 8+/Ubuntu 20.04+/Alpine 等)上开箱即用,无需安装额外包,且由内核直接过滤状态,比 grep 字符串更精准、更快。
-
ss -tn state established输出只含 ESTABLISHED 行,无误匹配风险;ss -tn | grep ESTABLISHED可能误中日志字段或端口名里的 “ESTABLISHED” 字串 - 老内核若不支持
state established,可退到ss -tn | awk '$NF ~ /^ESTAB/' | wc -l(注意字段顺序,先ss -tn | head -2确认 $NF 是否为状态列) - 不要加
-p参数做统计——它触发权限检查和进程查表,大幅拖慢速度,且对计数无意义
按端口查 Web 或数据库的活跃连接
服务压力常集中在特定端口,比如 80/443(HTTP)、3306(MySQL)、6379(Redis),必须能快速隔离统计。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查本地监听在 80 的 ESTABLISHED 连接:
ss -tn 'sport == :80' state established | wc -l(单引号必须,防 shell 解析:) - 查连到远程 443 的连接(如本机作为爬虫/客户端):
ss -tn 'dport == :443' state established | wc -l - 若输出混入 IPv6 地址(形如
[::1]:3306),加grep -v '\[.*\]'过滤,否则awk切割会错位
别把 ESTABLISHED 当成 QPS 或请求数
一个 ESTABLISHED TCP 连接可能复用多次 HTTP 请求(keepalive)、承载多个 gRPC 流、或长期空闲挂起,所以数值远高于瞬时业务压力。
- HTTP/1.1 默认 keepalive,Nginx 的
keepalive_timeout 65意味着 1 个连接可撑几十次请求 - 数据库连接池(如 MySQL 的 max_connections)会让少量 ESTABLISHED 对应大量应用层查询
- 真要看业务并发,得结合应用指标:Nginx 的
Active connections(curl http://localhost/nginx_status)、应用日志 QPS、或 APM 工具的请求吞吐量
实时监控时 watch -n 频率别设太低
高频轮询会持续触发 socket 子系统扫描,在万级连接机器上可能反向拖慢网络栈。
- 用
watch -d -n 2 'ss -tn state established | wc -l'足够捕捉趋势变化 - 绝对避免
-n 0.5或-n 1—— 每秒一次 syscalls 在高并发下已构成可观开销 - 如果发现数值持续 >65535,优先查
ss -s输出的 memory 和 orphan count,而不是立刻调大net.core.somaxconn
真正容易被忽略的是:连接数暴涨未必是流量突增,也可能是后端响应变慢导致连接堆积在 ESTABLISHED 状态迟迟不释放,这时要同步看 CLOSE_WAIT 和 FIN_WAIT2 是否同步上升。










