TCP/IP(十)TCP的连接管理(七)CLOSE_WAIT和TCP保活机制

CLOSE_WAIT探究

bash 复制代码
CLOSE_WAIT 状态出现在被动关闭方,当收到对端'FIN'以后回复'ACK',但是自身'没有'发送FIN包之前

服务器出现大量 CLOSE_WAIT 状态的原因有哪些?

bash 复制代码
1、通常来讲,CLOSE_WAIT状态的'持续'时间应该很'短',正如SYN_RCVD状态

2、但是在一些'特殊'情况下,就会出现大量'连接长时间'处于CLOSE_WAIT状态的情况

3、观察TCP连接状态,包括'CLOSE_WAIT'

netstat -nat | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
bash 复制代码
说明:'分析'一个'普通'的 TCP 服务端的'流程' 

备注: 注意每'一'步
bash 复制代码
分析: 导致服务端'没有'调用 close 函数的'原因'

主要分析的'方向'就是服务端'为什么没有'调用 close --> 没有发送'FIN'包

线上大量CLOSE_WAIT的原因深入分析

一次 Netty 代码不健壮导致的大量 CLOSE_WAIT 连接原因分析

二 如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP 连接,一端断电和进程崩溃有什么区别?

① TCP保活机制

bash 复制代码
sysctl -a|grep tcp_keepalive  --> '查看'

/proc/sys/net/ipv4/tcp_keepalive_intvl  

/proc/sys/net/ipv4/tcp_keepalive_probes  

/proc/sys/net/ipv4/tcp_keepalive_time

SO_KEEPALIVE 选项  --> '保活' 机制

② 操作系统默认值TCP保活计算方式

nginx listen 指令的tcp选项参数

Linux下 nginx so_keepalive 参数详解

http的keepalive及在nginx的配置使用

nginx的so_keepalive和timeout相关小计

④ 开启TCP保活连接考虑场景

⑤ 应用层实现心跳机制

如果已经建立了连接,但是服务端的进程崩溃会发生什么?

四 发送RST包的场景

相关推荐
kiwixing20 天前
启动service报错ORA-44317: database open read-only
数据库·oracle·database·故障·ora
jackl_都都6 个月前
解决方案 SHUTDOWN_STATE xmlrpclib.py line: 794 && ERROR: supervisor shutting down
linux·运维·稳定性·故障·可扩展性·故障发现
我的运维人生7 个月前
MySQL常见故障现象分析及解决办法
数据库·mysql·故障
西京刀客7 个月前
golang实现定时监控 CLOSE_WAIT 连接的数量
网络·golang·close_wait
偷拨网线的william8 个月前
电脑坏了去维修,第一家报价800,第三家说报废!
电脑·故障·维修
明矛顿了9 个月前
电脑开机蓝屏错误代码c000021a怎么办 电脑蓝屏报错c000021a的解决办法
电脑·故障·技术分析
明矛顿了9 个月前
电脑进水无法开机怎么办 电脑进水开不了机的解决方法
电脑·故障·维护
西风未眠10 个月前
PostgreSQL的常见错误和解决方法
数据库·postgresql·pgsql·故障
徐锦桐10 个月前
异常控制流ECF
linux·开发语言·操作系统·异常·中断·故障·终止