netstat -pnat 出现大量的CLOSE_WAIT

关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接。将关闭部分的状态转移摘出来,就得到了下图:

产生原因
通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状态呢?
在被动关闭连接情况下,在已经接收到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。
通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态。但是在一些特殊情况下,就会出现连接长时间处于CLOSE_WAIT状态的情况。

出现大量close_wait的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙与读或者写,没有关闭连接。代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。

时间: 2024-10-18 01:08:14

netstat -pnat 出现大量的CLOSE_WAIT的相关文章

zabbix 获取Windows Server 信息

zabbix windows 数据采集 zabbix对windows的支持,并没有Linux平台那么的强大,但可以通过使用windows的typeperf.exe 对windows性能数据进行采集 TypePerf.exe是一个命令行工具,包括把Windows操作系统的性能计数器数据输出到命令窗口或写入到支持该功能的日志文件格式中. 常见的参数如下: PerfCounter=UserPerfCountercpu,"\Processor(_Total)\% Processor Time"

查看tcp各个连接状态的数量

4. 查看tcp各个连接状态的数量 下面对的 netstat -tan|awk '$1~/tcp/{aa[$NF]++}END{for (h in aa)print h,aa[h]}' SYN_SENT 1 ESTABLISHED 3 LISTEN 15 netstat -tan|awk '$1~/tcp/{print $NF}'|sort|uniq -c|sort -nr 15 LISTEN 3 ESTABLISHED 1 SYN_SENT 统计8080端口上有多少个TCP连接,命令: net

swoole+Redis实现实时数据推送

<?php /** * *************************************** * 单进程保护 * * *************************************** */ $phpSelf = realpath($_SERVER['PHP_SELF']); $lockFile = $phpSelf.'.lock'; $lockFileHandle = fopen($lockFile, "w"); if ($lockFileHandle =

netstat查看CLOSE_WAIT

现象:netstat查看很多CLOSE_WAIT,造成日志提示Too many open files错误,ssh远程不上去,很多服务报错,响应不了请求. 解决思路:1.首先确认CLOSE_WAIT产生的链接.IP和端口,并对其抓包.然后再对正常情况的也抓包,并对两者进行对比和分析.2.排查结果是不正常的是因为没有回复关闭的包,即没有完成四次挥手. 通过原理图,我们知道了CLOSE_WAIT是被动关闭的状态.什么意思呢?比如客户端发了个请求,正常情况下是会收到服务器响应一个状态的,即Respons

netstat状态详解

一.生产服务器netstat tcp连接状态................................................................................ 2 1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2 1.2生产服务器某个业务web上连接状态数量...............................................

netstat状态

Netstat 状态分析 Netstat状态分类 用netstat -an命令查看!再stat下面有一些英文,简单说一下这些英文具体都代表什么: LISTEN:(Listening for a connection.)侦听来自远方的TCP端口的连接请求 SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的

linux下netstat --timers / -o详解及keepalive相关

在linux查看网络连接数或者网络状态,我一般用netstat或者lsof这两种,netstat的话有个时间计时功能,里面涉及到不少tcp/ip协议的知识,今天就来说一说我理解的netstat计时功能. netstat -altpno 或者 netstat -altpn --timers,看显示结果: Proto Recv-Q Send-Q Local Address    Foreign Address   State  PID/Program name  Timer 可以看到显示的标题,多出

linux下netstat --timers / -o详解及keepalive相关 2

在linux查看网络连接数或者网络状态,我一般用netstat或者lsof这两种,netstat的话有个时间计时功能,里面涉及到不少tcp/ip协议的知识,今天就来说一说我理解的netstat计时功能. netstat -altpno 或者 netstat -altpn --timers,看显示结果: Proto Recv-Q Send-Q Local Address    Foreign Address   State  PID/Program name  Timer 可以看到显示的标题,多出

Netstat命令详解(windows下)

转自:http://blog.csdn.net/hsd2012/article/details/50759017 Netstat 用于显示与IP .TCP .UDP 和ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况. 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP 可以容许这些类型的错误,并能够自动重发数据报.但如果累计的出错情况数目占到所接收的IP 数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat 查一查为什么