客户端死活连不上服务器,原因竟然是time_wait,怎样消除大量的time_wait状态
最近项目中客户端连接服务器时死活都连不上了,服务器查询出现大量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状态相关推荐
- 3dsmax顶点死活焊接不上的原因!
首先焊接距离一定要够. 如果焊接距离够了还焊接不上,那么分为两种情况 编辑样条线中的顶点 在样条线中,一个顶点最多只能连接两个线段. 编辑多边形中的顶点 编辑多边形中,需要焊接的两个顶点在不同的面上, ...
- fileZilla server客户端FTP连接不上服务器的解决方法
把filezilla的 Filazilla server interface.exe 和Filezilla server.exe 二个文件都加入防火墙的例外.
- 服务器存在但没有账套信息请重新设置,专业版15.0客户端连接不上服务器
环境如下:金蝶专业版15.0 3用户: 服务器是win7旗舰版sp1 32位,数据库是2008R2SQL.客户端是win7旗舰版sp1 64 位,XP sp3 32位 .这几台电脑在局域网里有共享打印 ...
- VOS客户端上服务器和软交换状态显示红灯的原因分析
VOS客户端上服务器和软交换状态灯显示红灯,实际后台服务都在运行的原因 登录VOS3000客户端 原因分析 VOS客户端连接到服务器是属于TCP连接,TCP连接一旦断开后,服务器和软交换的状态灯就会 ...
- 社保管理系统连接不上服务器,社保费客户端登录服务器异常
社保费客户端登录服务器异常 内容精选 换一换 本章节以Linux操作系统为例,指导您通过弹性云服务器内网方式连接GaussDB(for Redis)实例.使用内网连接GaussDB(for Redis ...
- 用友系统客户端登录不上服务器,图文详解用友客户端连不上服务器解决方法.pdf...
图文详解用友客户端连不上服务器解决方法,k3客户端连不上服务器,客户端连不上服务器,u8客户端连不上服务器,用友u8连不上服务器,用友连不上服务器,用友t3连不上服务器,用友u8客户端连不上,gta5 ...
- win10 英雄联盟登录不上服务器未响应,Win10英雄联盟登陆不上如何解决|Win10英雄联盟登陆不上的原因...
在Windows10正式版系统电脑中玩英雄联盟时,遇到了游戏登陆不上的情况,这该怎么办呢?我们要如何解决?出现LOL无法登录的情况一般有以下几个原因:网络问题,游戏维护,服务器爆满,客户端版本问题所引 ...
- 小红书显示没能找到服务器,微博崩了,小红书也崩了!原因竟然是因为这个?...
原标题:微博崩了,小红书也崩了!原因竟然是因为这个? 有时明星们的一件爆炸性新闻总是会瞬间传遍全国,然后就会出现微博登陆不进去,页面加载不出内容等表示微博崩了的情况.然而无论真实与否,明星总是少不了爆 ...
- 战网一直连接不上服务器,无法连接到战网(战网客户端安装时无法连接服务器怎么处理,急)...
无法连接到战网(战网客户端安装时无法连接服务器怎么处理,急),哪吒游戏网给大家带来详细的无法连接到战网(战网客户端安装时无法连接服务器怎么处理,急)介绍,大家可以阅读一下,希望这篇无法连接到战网(战网 ...
最新文章
- 马斯克“做空”特斯拉
- 什么时候用var关键字
- MySQL MHA: 一种master高可用的主从复制解决方案
- gin将请求体绑定到不同的结构体中
- BufferedReader和BufferedWriter读写文件
- 3D 音频技术产品介绍(1):Iosono the future of spatial audio
- (97)Verilog HDL:秒灯设计
- OpenGL基础51:泛光
- 专业管理系统-包含VB源代码(数据库)
- C语言中断函数c_int00的作用,关于DSP程序中的_c_int00含义
- 台式计算机能装蓝牙吗,台式机如何安装蓝牙
- 【MRI】GRAPPA (GeneRalized Autocalibrating Partially Parallel Acquisitions) 算法 仿真实验与原理剖析 (Matlab 实现)
- DICOM协议学习笔记(二)
- Android 6.0指纹识别App开发demo
- SylixOS 经得起检验的国产操作系统 (一)
- js获取label标签中的value值
- Caesar Cipher(线段树维护哈希)
- Web 端口敲门的奇思妙想
- 顶层设计理论和方法概述
- 警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram