HttpClient4 客户端出现TIME_WAIT
一、一般代码编写方式:
CloseableHttpClient httpclient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
try {CloseableHttpResponse response = httpclient.execute(httpPost);HttpEntity httpEntity = response.getEntity();return EntityUtils.toString(httpEntity, charset);} catch (Exception e) {logger.error("message code : " + e.getMessage(), e);} finally {httpPost.releaseConnection();}
二、现象
如果分开机子,一台机子跑服务器,一台机子跑客户端,客户端使用HttpClient4来进行请求。
会发现TIME_WAIT(连接哪端主动关闭,TIME_WAIT将出现在哪端,并且等待2MSL时间才会回收,大约一分钟)均在客户端。
但是按照我们以前学校的知识点,http请求结束后,应该是由服务器关闭才是。
三、原因
其实这是自己知识点不足导致的,
HttpClient4发送的其实是http1.1的,而我上边的服务器自动关闭的知识点是http1.0的,
http1.0 默认短连接,服务器主动关闭, 需要长连接需要配置keepalive
http1.1 默认长连接,因此服务器不会主动关闭,而httpclient4我们一般会直接写httpPost.releaseConnection(),因此自然是我们客户端主动关闭了
通过nc -l port, 也可以知道httpclient4默认发送的http1.1协议的
因此,如果还是希望服务器短连接并且主动关闭,可以配置Connection:close在http header
HttpClient4 客户端出现TIME_WAIT相关推荐
- MQTT客户端连接服务器协议,mqtt客户端和服务器长连接
mqtt客户端和服务器长连接 内容精选 换一换 介绍设置客户端和服务器的安全认证方式的相关参数.参数说明:表明与服务器建立链接后,不进行任何操作的最长时间.参数类型:USERSET取值范围:整型,0- ...
- 网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?
在进行TCP高并发服务器开发时,有些规则仿佛是约定俗成的,很多朋友会依据这些规则去做,比如高并发TCP服务器中进行主动关闭的一方最好是客户端.服务器端程序最好启用SO_REUSEADDR选项,但是很多 ...
- TCP协议客户端与服务器端一般的通信过程
服务器初始化 (1)调用socket,创建文件描述符 (2)调用bind,将文件描述符与ip/port连接起来.若端口号已被占用,则bind失败 (3)调用listen,声明该文件描述符是服务器的一个 ...
- netstat -ano | findstr 8611查看到大量的TIME_WAIT状态的解决办法
最近使用wsdlpull开源库curl模块调用webservice服务的压力测试的时候遇到的一个问题,其直接表象是客户端在发送http请求时失败,最终原因是客户端的TIME_WAIT状态的socket ...
- TIME_WAIT详解
1.time_wait状态是什么 简单来说:time_wait状态是四次挥手中服务器向客户端发送FIN终止连接后进入的状态. 下图为tcp四次挥手过程 可以看到time_wait状态存在于客户端收到服 ...
- socket服务器区分各个客户端信息,socket服务器如何区分哪个客户端
socket服务器如何区分哪个客户端 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务 ...
- TCP 连接管理机制(二)——TCP四次挥手的TIME_WAIT、CLOSE_WAIT状态
介绍三次握手的时候,着重了解的是三次握手过程中,应用层和传输层做了哪些工作:下面在了解四次挥手的时候,主要了解的是四次挥手的状态变化. 目录 一.四次挥手 1.第一次挥手 2.第二次挥手 3.第三次挥 ...
- 客户端发送协议包给服务器,TCP协议的客户端与服务器的通信过程
使用TCP时,客户端与服务器端的通信流程 服务器初始化 1)调用socket,创建文件描述符fd 2) 调用bind将fd与服务器的IP与PORT绑定 3)调用listen将套接字设为监听模式,准备接 ...
- TCP三次握手四次挥手及time_wait状态解析
TCP的建立--三次握手 1.服务器必须准备好接受外来的连接.通常通过调用socket,bind,listen这三个函数来完成,我们称之为被动打开(passive open). 2. 客户端通过调用c ...
最新文章
- MATLAB【四】 ————批量适配图片信息与excel/txt等文档信息,批量移动拷贝图片,批量存图片中点和方框
- 计算机模拟组装测试题一,江苏专转本计算机模拟自测试题(一)
- ClickHouse之Distributed Query Execution
- 短距离车间通信V2X简述
- channel(4)定时器
- 微服务架构最强讲解,那叫一个通俗易懂!
- QStackedWidget设置无效问题
- 列出IIS上的虚拟目录和网站信息。
- 顶社区创始人:解读顶社区的背后的事
- 市场营销分析--页面广告统计
- IHS遥感图像融合算法及其相关的算法
- java Hashtable 和 HashiMap 的区别
- 【平面设计基础】01:抠图—薄、透、露的朦胧美
- 查看文件的MD5值得方法 (校验完整性)
- h5移动端生成海报,图文结合
- 查看Linux下的文件
- 502粘到手上变硬了怎么办_手指被502粘住了?别硬扯,教你2招,胶水自动融化...
- 氢os android8,一加8T或预装氢OS11系统,基于Android 11定制
- oracle fx成立时间,oracle 日期格式FM/FX和日期后缀SP/TH/SPTH/THSP
- 什么是亚稳态,如何消除?
热门文章
- 关于信息安全制度中等级保护与分级保护的异同
- carbondate mysql_CarbonData集成Hive、Spark
- java毕业设计厨房管理系统Mybatis+系统+数据库+调试部署
- 内存管理 - mblock算法
- 查看Linux 、Apache 、 MySQL 、 PHP 版本的方法
- PPC WM6.1智能手机上使用日语辞典浅谈
- rootfs 制作ubuntu_如何构建一个arm64 AArch64的Ubuntu rootfs
- Windos 系统安装 Themebeta Chrome主题
- go list 转 map;数组转map 通用
- 用米思齐+点灯科技——ESP32点灯实验