最近项目中客户端连接服务器时死活都连不上了,服务器查询出现大量time_wait状态,于是迫在眉睫解决问题的着手点是如何避免出现大量的tima_wait状态。下面我将为大家介绍解决的方法:

下面让我们先来了温习下tcp的三次握手和四次挥手的过程图

tcp三次握手

tcp四次挥手

在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。

1、断网关闭时先调用shutdown函数

close与shutdown的区别主要表现在:
    close函数会关闭套接字ID,如果有其他的进程共享着这个套接字,那么它仍然是打开的,这个连接仍然可以用来读和写,并且有时候这是非常重要的 ,特别是对于多进程并发服务器来说。

而shutdown会切断进程共享的套接字的所有连接,不管这个套接字的引用计数是否为零,那些试图读得进程将会接收到EOF标识,那些试图写的进程将会检测到SIGPIPE信号,同时可利用shutdown的第二个参数选择断连的方式。

2、SO_REUSEPORT的使用

SO_REUSEPORT支持多个进程或者线程绑定到同一端口,提高服务器程序的性能,解决的问题:

  • 允许多个套接字 bind()/listen() 同一个TCP/UDP端口
  • 1)每一个线程拥有自己的服务器套接字
  • 2)在服务器套接字上没有了锁的竞争
  • 内核层面实现负载均衡
  • 1)安全层面,监听同一个端口的套接字只能位于同一个用户下面
int opt_val = 1;
if(setsockopt(mSockFD, SOL_SOCKET, SO_REUSEPORT, &opt_val, sizeof(opt_val)))
{ cout << "set reuseport error: " << errno << endl; return -errno;
}

3、setsockopt 设置 SO_LINGER 选项

struct linger so_linger;
so_linger.l_onoff = 1;
so_linger.l_linger = 0;
setsockopt(s,SOL_SOCKET,SO_LINGER,&so_linger,sizeof so_linger);

4、设置一些超时参数

设置以下参数
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

客户端死活连不上服务器,原因竟然是time_wait,怎样消除大量的time_wait状态相关推荐

  1. 3dsmax顶点死活焊接不上的原因!

    首先焊接距离一定要够. 如果焊接距离够了还焊接不上,那么分为两种情况 编辑样条线中的顶点 在样条线中,一个顶点最多只能连接两个线段. 编辑多边形中的顶点 编辑多边形中,需要焊接的两个顶点在不同的面上, ...

  2. fileZilla server客户端FTP连接不上服务器的解决方法

    把filezilla的 Filazilla server interface.exe 和Filezilla server.exe 二个文件都加入防火墙的例外.

  3. 服务器存在但没有账套信息请重新设置,专业版15.0客户端连接不上服务器

    环境如下:金蝶专业版15.0 3用户: 服务器是win7旗舰版sp1 32位,数据库是2008R2SQL.客户端是win7旗舰版sp1 64 位,XP sp3 32位 .这几台电脑在局域网里有共享打印 ...

  4. VOS客户端上服务器和软交换状态显示红灯的原因分析

    VOS客户端上服务器和软交换状态灯显示红灯,实际后台服务都在运行的原因 登录VOS3000客户端 原因分析  VOS客户端连接到服务器是属于TCP连接,TCP连接一旦断开后,服务器和软交换的状态灯就会 ...

  5. 社保管理系统连接不上服务器,社保费客户端登录服务器异常

    社保费客户端登录服务器异常 内容精选 换一换 本章节以Linux操作系统为例,指导您通过弹性云服务器内网方式连接GaussDB(for Redis)实例.使用内网连接GaussDB(for Redis ...

  6. 用友系统客户端登录不上服务器,图文详解用友客户端连不上服务器解决方法.pdf...

    图文详解用友客户端连不上服务器解决方法,k3客户端连不上服务器,客户端连不上服务器,u8客户端连不上服务器,用友u8连不上服务器,用友连不上服务器,用友t3连不上服务器,用友u8客户端连不上,gta5 ...

  7. win10 英雄联盟登录不上服务器未响应,Win10英雄联盟登陆不上如何解决|Win10英雄联盟登陆不上的原因...

    在Windows10正式版系统电脑中玩英雄联盟时,遇到了游戏登陆不上的情况,这该怎么办呢?我们要如何解决?出现LOL无法登录的情况一般有以下几个原因:网络问题,游戏维护,服务器爆满,客户端版本问题所引 ...

  8. 小红书显示没能找到服务器,微博崩了,小红书也崩了!原因竟然是因为这个?...

    原标题:微博崩了,小红书也崩了!原因竟然是因为这个? 有时明星们的一件爆炸性新闻总是会瞬间传遍全国,然后就会出现微博登陆不进去,页面加载不出内容等表示微博崩了的情况.然而无论真实与否,明星总是少不了爆 ...

  9. 战网一直连接不上服务器,无法连接到战网(战网客户端安装时无法连接服务器怎么处理,急)...

    无法连接到战网(战网客户端安装时无法连接服务器怎么处理,急),哪吒游戏网给大家带来详细的无法连接到战网(战网客户端安装时无法连接服务器怎么处理,急)介绍,大家可以阅读一下,希望这篇无法连接到战网(战网 ...

最新文章

  1. 马斯克“做空”特斯拉
  2. 什么时候用var关键字
  3. MySQL MHA: 一种master高可用的主从复制解决方案
  4. gin将请求体绑定到不同的结构体中
  5. BufferedReader和BufferedWriter读写文件
  6. 3D 音频技术产品介绍(1):Iosono the future of spatial audio
  7. (97)Verilog HDL:秒灯设计
  8. OpenGL基础51:泛光
  9. 专业管理系统-包含VB源代码(数据库)
  10. C语言中断函数c_int00的作用,关于DSP程序中的_c_int00含义
  11. 台式计算机能装蓝牙吗,台式机如何安装蓝牙
  12. 【MRI】GRAPPA (GeneRalized Autocalibrating Partially Parallel Acquisitions) 算法 仿真实验与原理剖析 (Matlab 实现)
  13. DICOM协议学习笔记(二)
  14. Android 6.0指纹识别App开发demo
  15. SylixOS 经得起检验的国产操作系统 (一)
  16. js获取label标签中的value值
  17. Caesar Cipher(线段树维护哈希)
  18. Web 端口敲门的奇思妙想
  19. 顶层设计理论和方法概述
  20. 警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram

热门文章

  1. 列表(listview)实现CheckBox全选效果
  2. Git的理解以及在IDEA中的使用
  3. servlet 理解 --servlet笔记
  4. 估算类问题-费米问题
  5. Google Earth Engine(GEE)——上传数据和数据下载详解
  6. ofo打响共享单车广告战第一枪,单车大战下一步还会怎么玩?
  7. Matlab计算曲面的切平面
  8. 内容正文选中一段文字分享到qq微博、新浪微博的代码
  9. 书签收藏难整理?这款书签工具管理超方便
  10. CSS 文字下面横线