连接超时的定位与修复
客户端一直等待,最后报 Connection timed out、i/o timeout 或 context deadline exceeded。和 Connection refused 不同,超时通常意味着包被丢弃或路径不通。
curl -v --connect-timeout 5 http://<host>:<port>/
nc -vz -w 5 <host> <port>
mtr -rwc 10 <host>
traceroute <host>
ping -c 4 <host>
ss -s
tcpdump -ni any host <host> and port <port>
云环境同时检查安全组、网络 ACL、路由表和 NAT。
DROP,包没有回 RST。mtr 判断丢包发生在哪一跳,区分本地、骨干网和目标机。DROP 还是 REJECT;DROP 表现为超时。ss -lnt 的 Recv-Q、Send-Q 和 netstat -s 的重传/溢出计数。somaxconn、tcp_max_syn_backlog,或给服务扩容。ping -M do -s <size> 验证,必要时调整接口 MTU。mtr — 路径与丢包tcpdump — 抓包确认ss — 套接字队列curl — 超时验证合上页面,先回答,再展开对照。
Connection refused 的含义有什么不同?Connection refused 表示目标可达但端口未监听或主动拒绝。mtr -rwc 10 逐跳看丢包,配合 traceroute、ping 和 tcpdump 确认路径与包是否到达。ss -lnt 的 Recv-Q/Send-Q 和 netstat -s 溢出计数,调 somaxconn、tcp_max_syn_backlog;MTU 用 ping -M do -s 验证后调整接口 MTU。