`

LINUX下解决netstat查看TIME_WAIT状态过多问题

 
阅读更多

netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c

     16 CLOSING
    130 ESTABLISHED
    298 FIN_WAIT1
     13 FIN_WAIT2
      9 LAST_ACK
      7 LISTEN
    103 SYN_RECV
   5204 TIME_WAIT
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
 
 
如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vim /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。
 
net.ipv4.tcp_syncookies = 1 表示开启SYN cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
 
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
 
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
 
net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间
 
下面附上TIME_WAIT状态的意义:
 
客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口
 
状态为TIME_WAIT
 
是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢?
 
有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?
 
主动关闭的一方在发送最后一个 ack 后就会进入 TIME_WAIT 状态 停留2MSL(max segment lifetime)时间这个是TCP/IP必不可少的,也就是“解决”不了的。
 
也就是TCP/IP设计者本来是这么设计的
 
主要有两个原因
 
1。防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
 
2。可靠的关闭TCP连接
 
在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。
 
TIME_WAIT 并不会占用很大资源的,除非受到攻击。
 
还有,如果一方 send 或 recv 超时,就会直接进入 CLOSED 状态
 
 
 

netstat -tunlp |grep 80

查看端口占用情况
分享到:
评论

相关推荐

    CentOS解决服务器存在大量time_wait的问题

    本文主要探讨了如何解决CentOS服务器上存在的大量TIME_WAIT TCP连接问题,这可能导致服务器连接数过多,进而引起服务假死。当服务器之间的通信过于频繁,如通过REST请求互相调用时,Java服务器可能无法及时回收TCP...

    netstat显示 TIME-WAIT 的原因及解决办法

    当我们看到netstat输出中存在大量的TCP连接处于TIME_WAIT状态时,这通常意味着系统可能存在一些性能问题或者配置上的挑战。本篇文章将深入探讨TIME_WAIT状态的原因以及如何解决。 TCP(传输控制协议)是一种面向...

    服务器大量TIME_WAIT解决方法

    3. 使用 `netstat -an` 命令查看服务器的网络连接状态,发现大量的 TIME_WAIT 状态已经不存在了。 总结 在 Linux 服务器中,TIME_WAIT 状态是一种正常的网络连接状态。然而,出现大量的 TIME_WAIT 状态可能会对...

    Netstat命令详解如何关闭TIME_WAIT连接如何查看nginx的访问流量[归类].pdf

    Netstat 命令是 Linux 系统中一个非常重要的网络管理工具,它可以显示网络状态、统计网络流量、查看网络连接状态等。下面我们来详细介绍 Netstat 命令的使用和详解。 Netstat 命令的基本语法为:netstat [-...

    netstat查看linux服务器网络连接状态.docx

    "netstat 命令在 Linux 服务器网络连接状态查看中的应用" Netstat 命令是一个功能强大且广泛使用的网络命令行工具,能够显示网络连接、路由表和网络接口信息。通过使用 Netstat 命令,系统管理员可以实时查看 Linux...

    linux下2个检查tcp连接的命令

    1 检测web服务器的链接数量及状态: netstat -ant|awk '{print $5 \t $6}'|grep ::ffff:|sed -e 's/::ffff://' -e 's/:[0-9]*//' |sort|uniq -c| sort -rn|head -10 结果: 122 125.162.71.199 TIME_WAIT 99 79.119...

    通过调整Linux TCP参数提示服务器性能

    例如,使用 netstat -ant|grep TIME_WAIT|wc -l 命令可以查看 TIME_WAIT 状态的连接数目,发现只有少数的 TIME_WAIT 状态连接。 调整 Linux TCP 参数可以显著提高服务器的性能,减少服务器的资源占用,提高数据传输...

    优化Linux的内核参数来提高服务器并发处理能力

    - 含义: 限制TIME-WAIT状态下的buckets数量,防止大量TIME_WAIT连接占用过多资源。 #### 应用步骤 1. 使用文本编辑器打开`/etc/sysctl.conf`文件。 2. 将上述参数添加到该文件中。 3. 保存并关闭文件。 4. 使更改...

    通过netstat查看同时连接某个端口的ip数

    例如,如果想要查看所有处于`TIME_WAIT`状态的连接到`192.168.0.1:8312`的客户端IP地址数量,可以使用以下命令: ```bash netstat -na | grep '192.168.0.1:8312' | grep 'TIME_WAIT' | cut --delimiter=' ' --...

    Linux_Tcp.rar_LINUX TCP _linux TCP_tcp linux

    开发者还需要了解如何处理TCP异常,比如半开连接、TIME_WAIT状态的管理等。 总结来说,Linux TCP编程涵盖了从基本的socket接口使用到高级的内核参数调优,是开发网络应用的基础。通过学习和实践,开发者能够构建...

    Linux下Socket编程的端口问题 ( Bind(): Address already in use ) PDF版

    ### Linux下Socket编程的端口问题 (Bind(): Address already in use) #### 一、问题背景与常见场景 ...通过上述分析和解决方案的应用,你可以有效地解决在Linux下进行Socket编程时遇到的端口绑定问题,提高开发效率。

    linux socket 状态迁移 源码测试

    在Linux中,我们可以通过`netstat -anp`命令查看Socket的状态。源码测试通常涉及阅读`tcp.c`等内核源码,理解TCP连接状态机的实现。 在`CLOSE_WAIT`状态下,服务器接收到客户端的关闭请求但并未立即关闭,而是继续...

    netstat -na 结果

    此外,还有一系列其他状态的连接,如`TIME_WAIT`和`FIN_WAIT_2`,这些都是TCP连接生命周期中的一部分,反映了连接的关闭过程或者是在等待对方确认的过程中。 ### 网络管理与安全意义 了解`netstat -na`命令的输出...

    netstat用法

    当连接断开后,状态会转变为`TIME_WAIT`,默认情况下`TIME_WAIT`状态将持续大约60秒,之后系统将自动清除该连接记录。 通过上述介绍可以看出,`netstat`是一个非常强大的工具,能够帮助用户深入了解Linux系统的网络...

    查看apache连接的连接并发数[参照].pdf

    本文将深入探讨如何查看Apache服务器在prefork模式下的连接并发数,以及通过Linux命令监控Apache的TCP连接状态。 首先,Apache的prefork模型是一种多进程模型,每个进程(也称为服务器进程)可以处理一个单独的...

    linux常用命令

    - `netstat -n | grep TIME_WAIT`: 提取所有处于TIME_WAIT状态的连接。 - `awk '{print $5}'`: 提取远程IP地址。 - `sort | uniq -c`: 计算每个IP出现的次数。 - `sort -rn`: 按连接数从多到少排序。 - `head -n 20`...

    Linux netstat命令查看并发连接数的方法

    以下是使用`netstat`命令查看Linux服务器并发连接数的详细方法。 首先,我们可以使用以下命令来获取服务器上的各种TCP连接状态的计数: ```bash netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S...

    Linux查看某个端口的连接数的方法

    监控这些状态可以帮助识别可能的网络问题,例如,如果`FIN_WAIT_2`或`CLOSE_WAIT`过多,可能意味着客户端或服务器在关闭连接时出现问题。 总的来说,通过上述方法,我们可以有效地监控Linux系统中特定端口的连接数...

    ECS 运维指南之Linux系统诊断.pdf

    3. TIME_WAIT & CLOSE_WAIT 的讨论总结。 4. 一次网络抖动经典案例分析。 四、Linux 系统服务与参数问题 Linux 系统服务与参数问题是 ECS 用户最常见的问题之一。该部分总结了一些可能会引起 Linux 系统服务与参数...

Global site tag (gtag.js) - Google Analytics