`

linux服务器出现大量TIME_WAIT的解决方法

阅读更多

今天突然发现系统的访问速度变得缓慢,反复查找原因,发现服务器存在大量的TIME_WAIT连接。怀疑加速乐出现问题!

通过netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’命令进行查询,反馈结果为:

TIME_WAIT 236849
ESTABLISHED 1321
LISTEN 1133

显然TIME_WAIT 的数量过于异常。

通过编辑配置文件,调整内核参数解决问题。

使用命令:vi /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连接数
netstat -ae|grep “TIME_WAIT” |wc –l

发现大量的TIME_WAIT 已不存在,mysql进程的占用率很快就降下来的,网站访问正常。 不过很多时候,出现大量的TIME_WAIT状态的连接,往往是因为网站程序代码中没有使用mysql.colse(),才导致大量的mysql  TIME_WAIT。

如果你的服务器是Windows平台,可以修改下面的注册表键值:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
“TcpTimedWaitDelay”=dword:0000001e

一般情况下,使用虚拟空间的用户不太需要担心此类问题,如果是使用VPS的用户,建议按照此类方法进行排查和设置,可以有效的提升mysql服务的查询速度。

分享到:
评论
1 楼 909012142 2014-03-17  

相关推荐

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

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

    服务器大量TIME_WAIT解决方法

    "服务器大量TIME_WAIT解决方法" 在 Linux 服务器中,TIME_WAIT 状态是一种常见的网络连接状态。然而,出现大量的 TIME_WAIT 状态可能会对服务器的性能产生影响。本文将详细介绍大量 TIME_WAIT 状态的成因、影响和...

    解决mysql出现大量TIME_WAIT

    本文将深入解析如何有效解决MySQL出现大量TIME_WAIT状态的问题,通过调整系统内核参数、优化数据库配置以及合理管理连接池策略,确保服务器性能的稳定与高效。 ### 一、理解TIME_WAIT TIME_WAIT是TCP协议中的一个...

    大量TIME_WAIT状态的连接解决方法

    ### 大量TIME_WAIT状态的连接解决方法 在Linux系统中,当服务器处理大量网络连接时,可能会遇到TIME_WAIT状态的连接过多导致的问题。TIME_WAIT是TCP连接的一个正常终止状态,但若数量过多则可能会影响到服务器性能...

    减少Linux服务器过多的TIME_WAIT

    在Linux服务器环境中,当TCP/IP连接关闭后,服务器端的...通过上述方法,可以有效地管理和减少Linux服务器上的TIME_WAIT状态连接,优化服务器性能,尤其是对于处理大量并发连接的服务器,如Squid,这些调整尤为重要。

    nginx+php产生大量TIME_WAIT连接解决办法1

    当服务器出现大量TIME_WAIT连接时,这可能会导致性能下降,甚至影响服务的可用性。TIME_WAIT状态是TCP连接生命周期的一部分,用于确保数据传输的可靠性,但过多的TIME_WAIT连接会消耗系统资源,特别是端口资源。 ...

    CLOSE_WAIT网络连接无法释放问题解决

    这种情况可能会导致服务器端出现大量未释放的网络连接,影响系统性能。 CLOSE_WAIT状态的产生是由于TCP连接的结束流程未走完所致。在客户端主动断开连接时,客户端会发送FIN包给服务器端,服务器端则会响应ACK包,...

    关于释放time_wait连接多的方案

    然而,在高并发场景下,大量连接处于TIME_WAIT状态可能会导致系统资源(如端口)的浪费,从而影响服务器性能。 针对这一问题,可以通过调整Linux系统的内核参数来优化TIME_WAIT状态的处理,以下是一些具体的优化...

    解决linux下大量TIME WAIT的方法详解

    解决方法:通过修改Linux内核参数,可以减少linux服务器的IME_WAIT套接字数量。vi /etc/sysctl.conf增加以下几行: 代码如下:net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1200...

    TIME_WAIT.rar_C-means_linux 网络状态_linux c wait_tcp_unix 网络编程

    在Linux系统中,进行网络编程时,TCP连接的TIME_WAIT状态是至关重要的一个环节。TIME_WAIT状态是TCP连接生命周期中的最后一个阶段,对于理解和优化网络应用性能有着直接的影响。本资源"TIME_WAIT.rar"包含了关于这个...

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

    TIME_WAIT状态带来的主要问题在于资源占用,尤其是在服务器端,大量并发连接进入TIME_WAIT可能导致端口耗尽,影响新连接的建立。解决这个问题的方法包括: 1. **调整TCP参数**:可以在操作系统层面修改TCP的超时...

    探讨如何减少Linux服务器TIME_WAIT过多的问题

    当服务器上出现大量的TIME_WAIT状态连接时,可能会影响系统性能,甚至可能导致服务器资源耗尽。TIME_WAIT状态是TCP连接生命周期中的一个阶段,它在客户端主动关闭连接后出现,服务器端的端口在一段时间内保持此状态...

    [服务器性能优化]Linux下高并发socket最大连接数和sysctl(time_wait)设置

    总结来说,优化Linux服务器的socket连接数和sysctl配置对于处理高并发场景至关重要。通过调整`sysctl.conf`文件中的相关参数,可以有效地提升系统性能,降低延迟,增强服务的稳定性。不过,任何改动都需要结合具体...

    Time-wait详解和解决方案.docx

    - **后端服务器上的`TIME_WAIT`**:由于Nginx到后端服务器的连接频繁关闭与重建,后端服务器更容易出现大量的`TIME_WAIT`状态。这可能会导致服务器性能下降,尤其是在高并发场景下。 #### 四、解决方案 针对由`...

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

    4. 关闭 TIME_WAIT 连接:使用 netstat -ant | grep TIME_WAIT | awk '{print $2}' | xargs kill -9 命令可以关闭 TIME_WAIT 连接。 网络连接状态详解: 网络连接状态可以分为 12 种可能的状态,前面 11 种是按照 ...

    优化Linux的内核提高服务器并发能力

    总之,通过综合应用上述方法,运维人员能够更高效地管理和优化Linux服务器的性能,从而在成本可控的前提下,最大限度地提升并发处理能力。需要注意的是,在进行系统内核参数调整时,应该根据服务器实际情况进行细微...

    linux sysctl

    - **端口复用问题:** 在某些场景下,例如服务器端,如果短时间内有大量的连接被关闭并进入TIME_WAIT状态,可能会导致可用端口耗尽,影响新连接的建立。 **2. 解决方案** - **缩短TIME_WAIT状态持续时间:** - ...

Global site tag (gtag.js) - Google Analytics