首页  

网络问题排查要点     所属分类 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 参数