由于使用 xfire/HttpMethod 造成Socket连接池满的问题及解决办法

正确解决java.net.BindException异常的有效解决方法 阅读详情

由于使用 xfire/HttpMethod 造成Socket连接池满的问题及解决办法

I/O exception (java.net.BindException) caught when processing request: Address already in use: connect (平台报出异常,传说该错误又socket连接满引起,故为上标题)

使用 XFire 访问webService, 运行一段时间后, 使用netstat -ano命令,发现服务器上有大量的CLOSE_WAIT连接,导致之后的WebService服务访问经常失败。

原因如下:
CLOSE_WAIT是Tcp状态迁移中的一个
当服务端主动关闭而客户端没来及响应进入的一个的状态,此状态TCP层默认时间大概为2小时左右
故导致了达到最大连接数出现了假死


解决办法:
对于使用httpclient的程序
只需要在HttpMethod method = new GetMethod("url");加上一行HTTP头的设置即可
method.setRequestHeader("Connection", "close");

对于使用xFire的程序
xFire是基于PostMethod实现的,CommonsHttpMessageSender类中会读取DISABLE_KEEP_ALIVE属性如果值为true的话,那么就会将PostMethod加入 Connection close的属性
在实例化httpClient对象后,添加下面一行代码即可
client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true")

=====================================================================================================

XFire平台下的连接超时设置

100 (continue) read timeout. Resume sending the request

public Client loadClient() throws MalformedURLException, Exception{
Client client = new Client(new URL(url));
client.setTimeout(20000);
HttpClientParams params = new HttpClientParams();
// 避免'Expect: 100-continue' handshake
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
//设置ws连接超时时间
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 20000l);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);
return client;
}

以上的做法在实际项目中发现行不通,现修改为:

URL _url = new URL(url);
HttpURLConnection httpConnection = (HttpURLConnection)_url.openConnection();
httpConnection.setReadTimeout(20000);//设置http连接的读超时,单位是毫秒

httpConnection.connect();
Client _client = new Client(httpConnection.getInputStream(), null);
_client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, String.valueOf( 20000 ));//设置发送的超时限制,单位是毫秒;
_client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
_client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");

实践检验,可行!

======================================================================================================

以上从网上搜到两种解决办法,首先觉的最终原因是因为使用 xfire/HttpMethod 造成Socket连接池满,所以标题使用此标题。

第一种方法和第二种方法解决理论一致,出发点也一致,只不过设置的参数不一致。

其他,,,是否能解决正在论证中。。。

另外还有中办法,网上说这种办法的人很多,不过我觉得是治标不治本

短时间内new socket操作过多
而socket.close()操作并不能立即释放绑定的端口
而是把端口设置为TIME_WAIT状态
过段时间(默认240s)才释放(用netstat -na可以看到)
最后系统资源耗尽
(windows上是耗尽了pool of ephemeral ports 这段区间在1024-5000之间)

可以考虑增加端口数量来解决,不过你为何不考虑用Socket池呢?让一个Socket重复利用呢?

以下是修改方法
默认最大数量的短暂 TCP 端口为 5000 ' 适用于 ' 部分中包含产品中。 这些产品中已添加新参数。 要增加最大值是短暂端口, 请按照下列步骤操作:
1.
启动注册表编辑器。
2.
注册表, 中找到以下子项, 然后单击 参数 :
HKEY _ LOCAL _ MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3.
在 编辑 菜单, 单击 新建 , 然后添加以下注册表项:
MaxUserPort 值名称:
值类型: DWORD
值数据: 65534
有效范围: 5000 - 65534 (十进制)
默认: 0x1388 5000 (十进制)
说明: 此参数控制程序从系统请求任何可用用户端口时所用最大端口数。 通常, 1024 的值和含 5000 之间分配临时 (短期) 端口。
4.
退出注册表编辑器, 并重新启动计算机。

注意 一个附加 TCPTimedWaitDelay 注册表参数决定多久关闭端口等待可以重用关闭端口。


原文 :http://ks2144634.blog.163.com/blog/static/1335855032012819112953794/

复现基于混频因子模型的GDP即时预测方法 基于混频因子模型的GDP即时预测方法复现 本文复现了混频因子模型(MIDAS)在GDP即时预测中的应用。该方法整合7个月度宏观经济变量(工业增加值、CPI、PMI等)与季度GDP数据,通过状态空间模型实现高频预测。技术实现包括:1)使用PCA提取潜在共同因子;2)构建状态空间模型处理混频数据;3)通过卡尔曼滤波进行参数估计。实证结果显示模型预测效果良好(测试集R²=0.82),其中工业增加值对因子1贡献最大(0.82),CPI对因子2贡献显著(0.78)。该方法为决策者提供了更及时的季度GDP估算。 阅读详情

相关推荐

4路QSFP28接口能玩出什么花样?基于璞致VU13P开发板的100G网络测试方案

本文详细介绍了基于璞致PZ-VU13P-KFB开发板构建100G网络测试方案的实战指南。该方案充分利用板载Xilinx Virtex UltraScale+ FPGA的强大算力与4路QSFP28接口,涵盖从光模块选型、Aurora协议配置、开源Corundum方案部署,到误码率测试及散热优化的全链路流程,为高速网络设备研发与验证提供了可靠的硬件平台。

cola5的博客 453

HttpClient工具类(支持多线程高并发)

今天在使用HttpClient的时候由于使用了多线程,所以出现了如下报错: I/O exception (java.net.BindException) caught when processing request to 于是最后改用连接池来创建httpClient 解决了这个问题,避免资源一直占用不释放的问题。 下面贴出两个工具类的代码供大家比较: 改造前的代码: import java.io.IOException; import java.net.URI; import java.util

爱米酱的博客 2559

双翌视觉系统配合机械手大视野定位案例(单目标带角度抓取)

一、定位原理概述 1.系统构架 视觉定位系统采用正向打光方式,光源在机械手上方,CCD从上往下拍摄,进行图像分析定位。相机将计算出的像素坐标转换为机械手的物理坐标,视觉软件与机械手进行网口通讯,将视野内物料的物理坐标发送给机械手,机械手抓取物料放在指定工位。 2.相机标定概述 系统采用宫格标定确定像素坐标和物理坐标一一对应关系,同时利用3点或者多点旋转标定求出旋转中心 系统采用宫格标定,自定义行列数和间距及旋转角度,通过机械手发送的当...

weixin_51554164的博客 2172

Java httpClient 使用连接池支持多线程高并发

当采用HttpClient httpClient = HttpClients.createDefault() 实例化的时候。会导致Address already in use的异常。 信息: I/O exception (java.net.BindException) caught when processing request to {}->http://**.**.**.** Add...

qzqanzc的博客 1万+

QuestaSim使用Xilinx库的设置

安装QuestaSim

miracle_eicont的专栏 3407

SAP-PP 返工订单成本归集优化:从物料结算到成本中心的配置与增强实践

本文深入探讨SAP-PP模块中返工订单成本归集的优化方案,重点解析从物料结算到成本中心的配置与增强实践。通过结算参数文件配置、分配结构调整及增强开发实战,解决返工费用误计入物料成本的问题,确保财务核算精准性。文章还提供测试验证方案与常见报错处理技巧,助力企业实现成本数据清晰流向分析。

weixin_29260291的博客 363

使用HttpClient请求超时- I/O exception (java.net.SocketException) caught when processing request: 连接超时

这里写自定义目录标题背景问题排查项目场景:问题描述:原因分析:解决方案:功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 背景 问题排查 首先排查这个报错是建立链接报错,不是被调用方等待超时或者被调用方服务扛不住。 看日志发现首次发

weixin_43831997的博客 1万+

Twincat Scopeview录波中的Ringbuffer设置技巧与常见问题解决

本文深入解析了倍福Twincat Scopeview录波功能中Ringbuffer(环形缓冲区)的核心设置技巧与常见问题解决方案。针对数据丢失、触发时机不准等痛点,详细阐述了缓冲区大小、预触发样本、采样率等关键参数的优化配置,并提供了多通道同步、自动诊断等实战应用指南,帮助工程师高效捕捉和分析PLC数据。

rainy的博客 845

由于使用 xfire/HttpMethod 造成Socket连接池满的问题及解决办法

【转】 使用 XFire 访问webService, 运行一段时间后, 使用netstat -ano命令,发现服务器上有大量的CLOSE_WAIT连接,导致之后的WebService服务访问经常失败。 原因如下: CLOSE_WAIT是Tcp状态迁移中的一个 当服务端主动关闭而客户端没来及响应进入的一个的状态,此状态TCP层默认时间大概为2小时左右 故导致了达到最大连接数出现了假死 ...

kenvic00000的专栏 221

基于CNN对抗嵌入的图像隐写——CNN-Based Adversarial Embedding for Image Steganography

CNN-Based Adversarial Embedding for Image Steganography https://ieeexplore.ieee.org/abstract/document/8603808 这篇论文发表在TIFS( IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY),TIFS是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊,SCI一区TOP期刊,目前影响因子有7多了。 1 概

weixin_48654804的博客 2279

【即插即用模块】Transformer篇 | TCSVT 2025 | DAFM:双注意力聚合+反向跨模态筛选,特征精准捕捉并融合!

本文提出了一种双模态注意力融合模块(DAFM),用于增强多模态图像融合任务中的特征交互。该模块通过双注意力聚合机制,结合自注意力与跨模态注意力,有效提升特征融合效果。DAFM采用可学习平衡因子动态调整注意力权重,并运用深度卷积降低计算复杂度。实验结果表明,该模块能显著提升多模态图像融合质量,适用于RGB-红外等双模态视觉任务。模块代码实现简洁,可直接集成到现有网络中作为特征融合层使用。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 175

xfire设置连接超时问题

近期使用xfire作为客户端访问WS,结果因为目标主机假死,造成客户端一致无法返回,后续调用也无法进行。更悲催的是采用定时器轮询调用,结果整个定时器都阻塞无法执行后续任务。 跟踪了一下代码发现引起上诉问题的代码出现在此处(红色部分): public Client loadClient() throws MalformedURLException, Exception{ ...

Done 497

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8899

java.net.BindException: 无法指定被请求的地址

单机版启动报错:java.net.BindException: 无法指定被请求的地址: Service ‘sparkDriver’ failed after 16 retries (on a random free port)!解决办法是在配置文件中添加执行命令:source /etc/profile,让环境配置生效再次启动,就可以了我是使用SparkPi来计算Pi的值。

forget_wt的博客 3106

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【jmeter】 I/O exception (java.net.SocketException) caught when processing request to URL: Connect

【jmeter】 I/O exception (java.net.SocketException) caught when processing request to URL: Connect 问题记录

Yin_m的博客 5782

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

已解决java.net.BindException异常的正确解决方法,亲测有效!!!

已解决java.net.BindException异常的正确解决方法,亲测有效!!!

小明的Java问道之路 9208

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用HttpClient时抛出I/O异常

使用HttpClient时抛出I/O异常,大多是因为网络问题,可以说是这辈子遇见最奇葩的问题了,电脑插上网线,上传图片抛出IO异常I/O exception (java.net.SocketException) caught when processing request to {s}->https://请求域名: Connection reset by peer: socket write...

haomazdl的博客 4416

I/O exception (java.net.SocketException) caught when processing request: Connect

Exception 【一个故障引发的话题】 最近,项目中的短信模块收到一个故障日志,要求我协助调查一下: 2010-05-07 09:22:07,221 [?:?] INFO httpclient.HttpMethodDirector - Retrying request :org.apache.commons.httpclient.H...

WGH100817的博客 4954

java高并发连接池_Java httpClient 使用连接池支持多线程高并发

当采用HttpClient httpClient = HttpClients.createDefault() 实例化的时候。会导致Address already in use的异常。信息: I/O exception (java.net.BindException) caught when processing request to {}->http://**.**.**.** Addres...

weixin_34729012的博客 810

httpclient4 多线程请求RetryExec I/O exception 问题解决

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34248487的博客 3750

【Java】已解决java.net.BindException异常

当你使用ServerSocket或Socket类的bind()方法时,如果指定的地址和端口已经被其他应用程序占用,或者由于某些配置问题导致无法绑定,就会抛出这个异常。在Java网络编程中,java.net.BindException异常是一个常见的错误,它通常发生在尝试将套接字(Socket)绑定到特定地址和端口时。这个异常通常表明地址已经被使用,或者出于其他原因无法绑定。在这个示例中,如果8080端口已经被其他服务占用,那么ServerSocket的构造函数会抛出BindException。

屿小夏.的知识博客 1297

Exception in thread "main" java.net.BindException: Address already in use: NET_Bind

在Java开发Socket中,可能会出现以下信息: Exception in thread "main" java.net.BindException: Address already in use: NET_Bind 这是由于端口被占用了。 解决的办法有以下几种: 1、更改程序中“ServerSocket ser = new ServerSocket(12333);”中的端口为其他端口 ...

云之彼端的博客 4万+

java socket异常总结

Java Socket 网络编程常见异常 1.java.net.SocketTimeoutException . 这 个异 常比较常见,socket 超时。 一般有 2 个地方会抛出这个,一个是 connect 的 时 候 , 这 个 超 时 参 数 由connect(SocketAddress endpoint,int timeout) 中的后者来决定,还有就是 setSoTimeout(...

welcome66的专栏 894
上一篇: xfire设置连接超时问题
下一篇: 函数式编程扫盲篇
mmoooodd
博客等级 码龄18年 35粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值