精准捕获高并发TCP连接需聚焦SYN包:用tcpdump -i eth0 'tcp[tcpflags] == tcp-syn'匹配纯SYN,加-nn、-t、-c N或-G轮转控制输出,-B 4096防丢包,再用tshark或netstat验证效果。

抓取高并发连接建立包,核心是精准捕获 TCP 三次握手的 SYN 包,同时避免被海量流量淹没或漏掉关键连接。重点不在“抓得多”,而在“抓得准、看得清、不丢包”。
聚焦 SYN 包:识别连接发起行为
TCP 连接建立始于客户端发送的 SYN 包(标志位为 SYN=1, ACK=0)。高并发场景下,大量新连接会集中发出 SYN,这是最可靠的触发信号。
- 用 tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0' 精准匹配纯 SYN 包(排除 SYN+ACK)
- 更简洁写法:tcpdump -i eth0 'tcp[tcpflags] == tcp-syn'
- 若只关注某服务端口(如 8080),加 and port 8080 缩小范围
限制输出干扰:提升可读性与稳定性
高并发时每秒可能有数百个 SYN,不加控制会导致刷屏、延迟甚至丢包。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 必加 -nn:禁用域名和端口名解析,避免 DNS 查询拖慢输出、保证端口号直显
- 推荐加 -t 或 -tttt:显示时间戳(后者带日期),便于定位爆发时刻
- 用 -c N 限定数量(如 -c 50),防止持续抓取失控;或配合 -G 60 -w syn_%Y-%m-%d_%H:%M.pcap 实现按分钟轮转保存
避免内核丢包:保障关键包不遗漏
当 SYN 洪水到来,tcpdump 若处理不过来,会丢弃部分包(显示 dropped privs 或内核提示 packets dropped by kernel)。
- 加 -B 4096(单位 KB)增大内核捕获缓冲区,减少丢包风险
- 避免使用太宽泛的过滤器(如不加协议限制直接 host x.x.x.x),优先用 tcp and src portrange 1024-65535 锁定客户端随机端口段
- 若需长期监控,建议用 -w syn.pcap 直接写磁盘,而非依赖实时终端输出
验证是否抓到真实高并发连接
抓完后快速确认效果:
- 用 tcpdump -r syn.pcap | grep 'S[. ]' | head -20 查看前20个 SYN 行(S 表示 SYN 标志)
- 统计每秒 SYN 数:tshark -r syn.pcap -T fields -e frame.time_epoch | cut -d. -f1 | sort | uniq -c | sort -nr | head -5
- 对比服务器 netstat -s | grep -i "SYNs to LISTEN" 或 ss -s 中的 “TCP connections established” 增量,交叉验证

















