`

linux 下大量TIME_WAIT 的处理

 
阅读更多

 

Linux下高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以减少服务器的IME_WAIT套接字数量。

  

vi /etc/sysctl.conf

  增加以下几行:

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 1024    65000

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_max_tw_buckets = 5000

  说明:

  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 = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

  net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

  net.ipv4.ip_local_port_range = 1024    65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

  net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。 

  net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。



  执行以下命令使配置生效:

/sbin/sysctl -p
 
分享到:
评论

相关推荐

    解决mysql出现大量TIME_WAIT

    在IT领域,尤其是在服务器运维与数据库管理中,遇到“大量TIME_WAIT”状态的问题并不罕见,尤其是在高并发场景下,如MySQL服务器。本文将深入解析如何有效解决MySQL出现大量TIME_WAIT状态的问题,通过调整系统内核...

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

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

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

    ### 大量TIME_WAIT状态的连接解决方法 在Linux系统中,当服务器处理大量网络连接时,可能会遇到...通过以上步骤,可以在一定程度上缓解由于大量TIME_WAIT状态连接造成的资源压力,提高服务器的处理能力和服务质量。

    服务器大量TIME_WAIT解决方法

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

    【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇 - slv

    【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法,这是一个关于网络编程和Linux系统配置的问题。在TCP/IP通信中,TIME_WAIT状态是TCP连接生命周期的一部分,用于确保...

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

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

    关于释放time_wait连接多的方案

    针对这一问题,可以通过调整Linux系统的内核参数来优化TIME_WAIT状态的处理,以下是一些具体的优化策略: ### 1. 开启SYN Cookies `net.ipv4.tcp_syncookies=1` 此参数用于在SYN队列满时启用SYN Cookies功能。在...

    减少Linux服务器过多的TIME_WAIT

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

    linux内核协议栈TCP time_wait原理、优化、副作用1

    在Cobar测试中,使用sysbench.short进行压力测试,发现即使在默认配置下,服务端的大量time_wait状态也会导致资源占用,影响性能。 综上所述,理解并优化Linux内核协议栈中的TCP time_wait状态是至关重要的,特别是...

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

    问题描述:在Linux系统中高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。解决方法:通过修改Linux内核参数,可以减少linux服务器的IME_WAIT套接字数量。vi /etc/sysctl.conf...

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

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

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

    然而,大量TIME_WAIT状态的连接可能导致端口资源的耗尽,特别是对于高并发的服务器,如Squid缓存服务器。在这种情况下,可以通过调整Linux内核参数来缓解问题: 1. `net.ipv4.tcp_syncookies = 1`:启用TCP同步...

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

    - `net.ipv4.tcp_fin_timeout`:控制连接在FIN_WAIT_2状态下等待的时间,可适当缩短以释放资源。 - `net.ipv4.tcp_keepalive_time`:设置空闲连接的探测间隔,防止死连接占用资源。 在进行这些调整时,务必了解它们...

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

    因此,每次请求处理完成后,连接会被关闭,从而使得Nginx进入`TIME_WAIT`状态的可能性较大。 - **后端服务器上的`TIME_WAIT`**:由于Nginx到后端服务器的连接频繁关闭与重建,后端服务器更容易出现大量的`TIME_WAIT...

    linux sysctl

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

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

    首先,针对大量TIME_WAIT状态的TCP连接导致的资源消耗问题,可以调整以下内核参数: 1. `net.ipv4.tcp_syncookies= 1`:启用SYNCookies功能,以防止由于SYN等待队列溢出而引起的SYN攻击。默认关闭,设置为1则开启。...

    linux_c_api.zip_C函数_Linux下的API_linux C函数

    Linux C API包含了大量用于系统调用、文件操作、进程管理、网络通信等任务的函数。这些函数使得程序员能够编写高效且可靠的系统级代码。 一、文件操作API 在Linux中,C语言的文件操作API主要包括`fopen`, `fclose`...

Global site tag (gtag.js) - Google Analytics