网络问题排查要点
所属分类 architecture
浏览量 2203
超时 连接超时 读写超时
读写超时
readTimeout/writeTimeout so_timeout socketTimeout
连接超时 connectionTimeout
连接池
连接获取超时 connectionAcquireTimeout
空闲连接清理超时 idleConnectionTimeout
tcp 队列
syns queue(半连接队列)
accept queue(全连接队列)
三次握手,server 收到 client 的 syn 后,放到 syns queue,
回复 syn+ack 给 client,server 收到 client 的 ack,
如果 accept queue 满了 ,执行 tcp_abort_on_overflow
没满 从 syns queue 拿出放入 accept queue 中
tcp_abort_on_overflow
0 server 丢弃 client 发过来的 ack
1 server rst 给 client
connection reset / connection reset by peer
netstat -s 输出和连接失败相关的信息
202270382 invalid SYN cookies received
三次握手ack包,syncookies校验没通过
13700572 resets received for embryonic SYN_RECV sockets
syn_recv状态下,收到非重传的syn包,则返回reset
1123035 passive connections rejected because of time stamp
开启sysctl_tw_recycle,syn包相应连接的时间戳 小于 路由中保存的时间戳;
14886782 failed connection attempts
syn_recv状态下,socket被关闭; 或者 收到syn包(非重传)
438798 times the listen queue of a socket overflowed
收到三次握手ack包,accept队列满
438798 SYNs to LISTEN sockets ignored
收到三次握手ack包,因各种原因(包括accept队列满) 创建socket失败
全连接队列大小
min(backlog, somaxconn) backlog 在 socket 创建时传入
半连接队列大小
max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog)
容器连接队列大小
backlog
Tomcat acceptCount
Jetty acceptQueueSize
RST 异常
RST 包表示连接重置,用于关闭一些无用的连接,通常表示异常关闭,区别于四次挥手。
connection reset / connection reset by peer 就是 RST 包导致的
向不存在的端口发 SYN ,server 直接返回RST ,用于中断连接。
正常的连接关闭 需要通过 FIN ,不过也可以用 RST
tcp 队列溢出发送 RST
一方长期未收到另一方的确认报文,在一定时间或重传次数后发 RST
网络环境差可能会导致很多的 RST 报文
在一个已关闭的连接上读操作 connection reset
在一个已关闭的连接上写操作 connection reset by peer
broken pipe
TIME_WAIT 和 CLOSE_WAIT
主动关闭的一方 进入 timewait 状态
各种连接状态数统计
netstat -nat|awk '{print $6}'|sort|uniq -c|sort -rn
ss -ant | awk '{++S[$1]} END {for(a in S) print a, S[a]}'
linux ss 命令
tcp知识点整理
linux性能分析及调优
jmeter长连接配置
tomcat长连接配置
上一篇
下一篇
服务器性能指标介绍
spring资源Resource接口
oauth2.0要点
java逃逸分析和TLAB及对象分配过程
centos时区问题
java8 jvm 参数