linux下短链接出现TIME_WAIT耗尽端口号的解决方法

简介:

最近使用C++开发libcurl库访问OpenSearch程序,出现”Cannot assign requested address”错误,大量请求错误。Google后问题集中在linux下的TIME_WAIT上。

      出现TIME_WAIT的原因是短连接耗尽了系统的socket端口号,新的连接分配不到端口号,所以才产生的上述错误。

      短链接耗尽端口号的原因得从TCP/IP的底层说起。


      TCP/IP关闭链接时会使用我们通常所属的4次握手协议,这是就出现了服务端确认关闭链接后客户端发送确认后还需要等待一段时间,这段时间客户端会把链接置为TIME_WAIT状态,通常TIME_WAIT时间为2个msl,大概为60s左右,根据服务器设置而不同。

       出现TIME_WAIT后会导致网络访问缓慢,请求失败等一系列的问题。为了解决这个问题就需要设置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时间

      最后问了小康,最终搞定了,实在感谢小康。其实修改关键的内核参数是下面的:

      net.ipv4.tcp_tw_timeout = 3

     修改这个参数以后让链接关闭以后处在TIME_WAIT 3s的时间。这个再看网络链接,数量已经大大降低,从原先耗尽的端口,现在高并发访问最多占用4000个端口。

     分析一下第一种修改的timeout参数,从参数名称上就可以看出来,其实是FIN_WAIT的时间,并不是TIME_WAIT的时间。只是协议里边第一次等待的时间。为什么修改的net.ipv4.tcp_tw_recycle = 1这个参数不起作用现在也还没有搞清楚。

目录
相关文章
|
2月前
|
Linux
linux查看应用对应的端口
linux查看应用对应的端口
21 0
|
2月前
|
网络协议 Linux 网络安全
linux7打开、关闭端口
linux7打开、关闭端口
43 0
|
2月前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
41 0
|
1月前
|
网络协议 安全 Linux
linux配置防火墙 Centos7下 添加 端口白名单
linux配置防火墙 Centos7下 添加 端口白名单
76 0
|
2月前
|
存储 安全 网络协议
使用 firewall-cmd 管理 Linux 防火墙端口
本文将介绍如何使用 firewall-cmd 工具在 Linux 系统中进行简单端口管理,包括开放、查询、关闭等操作。通过实例展示相关命令的用法,希望能对大家有所帮助。
148 0
|
5天前
|
Linux 开发工具
linux中出现不在 sudoers 文件中。此事将被报告的解决方法
linux中出现不在 sudoers 文件中。此事将被报告的解决方法
12 0
|
6天前
|
安全 Linux 网络安全
|
13天前
|
弹性计算 Shell Linux
|
14天前
|
安全 Linux 网络安全
【专栏】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患,教你一招找出所有开放的端口,然后直接干掉!
【4月更文挑战第28天】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患。要找出开放端口,可使用 `netstat -anp`、`lsof -i` 或 `nmap` 命令。关闭端口可通过停止相关服务、修改防火墙规则或禁用网络接口。注意不要随意关闭重要端口,操作前备份数据。保持端口安全对系统安全至关重要。
|
18天前
|
Linux 网络安全
【Linux】如何修改为固定ip和增加端口
【Linux】如何修改为固定ip和增加端口
8 1