首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

网关使用 Apache HttpClient 连接池出现异常

除了 HttpURLConnection,常用Http Client 要数 Apache HttpClient。...一般情况下, HttpClient 已经能满足业务需求了;但是在网关这种高并发场景下,使用 HttpClient 进行大量请求网络,还是需要用连接池才能提高网关TPS,不然很容易成为网关瓶颈。...Apache HttpClient早期版本,提供了PoolingClientConnectionManager、DefaultHttpClient 等类来实现 Http 连接池,但这些类在 4.3...,先从连接池中连接时等待(连接池不会立即返回,如果所有的连接检出) staleConnectionCheckEnabled:可以在潜在 IOExceptions 成本性能有所提高被禁用 http...UnknownHostException) { return false; } // 连接拒绝

75110

MongoDB 集群请求连接拒绝分析

背 景 某运营商搭建了一套 MongoDB 集群,承载了大大小小几十个非计费类应用,1亿左右用户量,随着访问量增加,业务繁忙时期偶尔出现连接拒绝错误。...如果有多个实例化MongoClient,那么就会有多个对应连接池。 ? 通过调试看到MongoClient连接池大小默认值为100。...Current表示当前到实例上正在运行连接数。 Available表示当前实例还可以支持并发连接数。 TotalCreated表示当前实例从启动到现在一共创建连接数,包括历史已经关闭了。...可以看到当并发连接到达10个后,第11个连接拒绝了。因为服务端此时设置maxConn就为10. 下面再次修改服务器上maxConn参数为100,其它参数不变,测试第二个场景。 ?...如果客户端连接数超过mongod或mongos最大并发数, 会导致超过连接请求refused。

2.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

MongoDB 集群请求连接拒绝分析

背 景 某运营商搭建了一套 MongoDB 集群,承载了大大小小几十个非计费类应用,1亿左右用户量,随着访问量增加,业务繁忙时期偶尔出现连接拒绝错误。...如果有多个实例化MongoClient,那么就会有多个对应连接池。 ? 通过调试看到MongoClient连接池大小默认值为100。...Current表示当前到实例上正在运行连接数。 Available表示当前实例还可以支持并发连接数。 TotalCreated表示当前实例从启动到现在一共创建连接数,包括历史已经关闭了。...可以看到当并发连接到达10个后,第11个连接拒绝了。因为服务端此时设置maxConn就为10. 下面再次修改服务器上maxConn参数为100,其它参数不变,测试第二个场景。 ?...如果客户端连接数超过mongod或mongos最大并发数, 会导致超过连接请求refused。

2.2K40

使用apacheHttpClient进行http通讯,隐藏HTTP请求头部字段是如何自动添加

我们用apacheHttpClient这个库消费云端Restful API时,一般都需要两次HTTP调用,第一次获得某种token,比如获取防止跨域请求伪造攻击Cross-site...通常情况下,第一次请求完毕后,服务器都会给客户端返回一些cookie字段,在第二次请求时,如果使用是postman测试工具或者apacheHttpClient这个库,cookie字段都会自动附加在第二次请求...这个cookie是什么时候传进来? ? 看来我们必须进入httpcore-4.4.3.jar这个apache HttpClient实现里去调试。 ?...经过观察发现,一旦我执行完204行conn.sendRequestHeader方法,就能观察到Cookie自动设置了,所以奥妙就在第204行里。 ?...UserAgent自动填充:Apache-HttpClient/4.5.1, 这个也不用程序员操心。 ?

1.6K20

Java HttpClient使用小结

转载自 https://blog.csdn.net/bhq2010/article/details/9210007 httpclientapache一个项目:http://hc.apache.org...对于需要从同一个站点抓取大量网页程序,应该使用连接池,否则每次抓取都和Web站点建立连接、发送请求、获得响应、释放连接,一方面效率不高,另一方面稍不小心就会疏忽了某些资源释放、导致站点拒绝连接(很多站点会拒绝同一个.../hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d5e467)上默认连接个数,setMaxPerRoute则单独为某个站点设置最大连接个数...连接最大等待时间则是指和站点建立连接最大等待时间,超过这个时间站点不给回应,则认为站点无法连接。第7行设置httpclient不使用NoDelay策略。...当httpclient发送请求之后出现异常时,就会调用这个方法。在该方法中根据已执行请求次数、请求内容、异常信息判断是否继续重试,若继续重试返回true,否则返回false。

73410

HttpClient详细解释

copy CommonsHttpClient项目现在是生命尽头,不再被开发, 已被Apache HttpComponents项目HttpClientHttpCore 模组取代,提供更好性能和更大灵活性...插件式自定义认证方案。 8. 便携可靠套接字工厂使它更容易使用第三方解决方案。 9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机最大连接数,发现并关闭过期连接。...4.3教程 我源码 httpclient异常情况分析 我项目中用到HttpClientUtil (2016/12/17) [java] view plain copy package...return false; } if (exception instanceof ConnectTimeoutException) { // 连接拒绝...目标服务器不可达 return false; } if (exception instanceof ConnectTimeoutException) { // 连接拒绝

1.3K20

Java爬虫系列二:使用HttpClient抓取页面HTML

根据百度给出HomePage是这个:http://hc.apache.org/httpclient-3.x/,但是进入后你会发现有句话 大意是:Commons HttpClient这个项目已经不再维护了...,它已经Apache HttpComponents替代了。...有兴趣并且英文好朋友可以好好研究下哦 ~~ 额~~那个~~我英文不好,就不按照官网来了,直接给出我自己在网上学练习案例~~ 二、HttpClient入门实例 新建一个普通maven项目:名字随便起...Content-Type" content="text/html; charset=utf-8"> 系统检测亲不是真人行为,因系统资源限制,我们只能拒绝请求...如果代理ip刚好不能用的话,会报错,如下显示连接超时,这个时候需要更换一个新代理ip 3.另外,程序识别出来很大原因是短时间内做了太多访问,这个是正常人不会有的频率,因此我们也可以放慢爬取速度,

93210

一场HttpClient调用未关闭流引发问题

,Job就正常执行了;后来第二天上去看时候居然又停止了, 但是JobJVM是还在,并没有挂掉,就是没有日志,看起来就是阻塞了一样; 这个时候又把生成环境重启让他先正常执行,然后立马去测试环境看看能不能重现...连接连接一直没有回收回去,后面的线程又一直在调用这个doGet方法; 但是又获取不到连接,所以就一直阻塞在哪里,直到连接超时HttpClient内部三个超时时间区别 然后myAsync 这个线程池线程也是有限...可以看到有很多80连接端口处于CLOSE_WAIT状态; CLOSE_WAIT状态原因与解决方法 问题原因找到了,那么解决方法就很简单了,把HttpClient连接流关闭掉就行了 HttpEntity...CallerRunsPolicy :它直接在 execute 方法调用线程中运行拒绝任务;如果执行程序已关闭,则会丢弃该任务 就是说线程池队列也满了,就会触发丢弃策略,CallerRunsPolicy...是用调用线程池那个线程来执行; ThreadPoolExecutor里面4种拒绝策略( 为了不让他们互相影响,改下线程池丢弃策略就行了 Spring Boot 定时任务单线程和多线程

3.3K30

HttpClient4.X 升级 入门 + http连接池使用

转载请注明出处,谢谢~ http://blog.csdn.net/shootyou/archive/2011/05/12/6415248.aspx 在一次服务器异常排查过程当中(服务器异常排查过程我会另起文章...HttpClient4在这点上做了改进,使用我们常用InputStream.close()来确认连接关闭(4.1版本之前使用entity.consumeContent()来确认内容已经消耗关闭连接)...首先我文中提出方法in.close()它会触发一个连接释放这个连接将重新连接管理器收回,官网原文是这么说:“Closing the input stream will trigger connection...+版本ConnManagerParams已经Deprecated了。...我在写这篇日志时候时候httpclient 版本是4.0.3,从4.0版本之后ConnManagerParamsDeprecated,没想到一个小版本升级会有这么大变化。

51130

关于心跳ajax请求pending状态(挂起),stalled时间过长问题。涉及tcp连接异常

大家好,又见面了,我是你们朋友全栈君。 环境:景安快云服务器(听说很垃圾,但是公司买,我也刚来),CentOS-6.8-x86_64,Apache,MySQL5.1,PHP5.3....我首先找到有价值文章是这篇:关于请求挂起页面加载缓慢 链接: http://kb.cnblogs.com/page/513237/ 文章结论是,没有找到解决办法,但是大致描述了一个原因就是tcp...连接问题,而且跟chrome浏览器有关,关于socket这些,不是太了解,但是知道跟tcp握手有关。...stalled,然后他通过抓包工具,证明是tcp 连接出了问题,跟上文一样,然后结论是网络问题或者服务端问题。...然后虽然我确实看不懂这个抓包工具里面的信息,不过明显报错我还是能看出来,也就是 TCP Previous segment not captured,这个错误出现频率很高,我想这应该就是跟tcp链接异常有关报错

2.8K10

httpclient4.x访问https

如果这个证书不是向第三方权威机构申请,浏览器会提示证书有问题(使用httpclient访问的话会报错)。如果忽略错误,则浏览器接受证书并解密响应,发送数据也用此密钥加密。...双向认证的话,客户端访问服务端也要提供证书,否则服务端拒绝响应。而且如果是自己生产证书,需要把客户端证书导入到服务端信任列表中,否则服务端也会拒绝。...前面说到,如果服务端证书不是向第三方权威机构申请,使用httpclient访问会报错。解决办法由两种,第一种是将证书导入jre密钥库信任列表;第二种是让他不去验证服务端证书。...如果需要双向认证,还需要为httpclient指定客户端需要使用证书。...,并注册到连接管理器。

49610

HttpClient 在vivo内销浏览器高并发实践优化

日志中心有大量从Http连接池获取连接异常:org.apache.http.impl.execchain.RequestAbortedException: Request aborted。...那么问题就极有可能是报文过大导致了某种异常,造成了连接不能被复用也不能释放。2.6 源码分析开始分析之前,我们需要了解一个基础知识:Http连接和短连接。...至此我们可以大胆给出一个猜测:长连接有效期是永久,而因为某种异常导致长连接没有及时关闭,而永久存活了下来,不能被复用也不能释放。...但此时相信大家也都存在一个疑问:作为广泛使用开源框架,HttpClient难道对长连接管理这么粗糙吗?...”中步骤2,连接直接关闭;所以正常情况下是没有问题,长连接其实并没有发挥真正作用;那问题自然就只能出现在一些异常场景,导致了长连接没有及时关闭,结合最初分析,是服务端主动断开了连接,那大概率出现在一些超时导致连接断开异常场景

30320

Tomcat性能调优

但是在性能这方面欠缺,不管这个应用如何都会遭到客户拒绝。客户总是期望它们应用应该有更好性能。如果你在产品中使用了Tomcat服务器,那么这篇文章就会给你几方面来提升Tomcat服务器性能。...要更改文件(catalina.sh) 位于"\tomcat server folder\bin\catalina.sh",下面,给出这个文件配置信息, [plain] view plain copy...如果没有指定,这个属性默认值为“200”。任何多出并发请求将收到“拒绝连接错误提示,直到另一个处理请求进程释放。...给数据库连接池设置正确值也是十分重要。我所说值是指Resource要素最大空闲数(maxIdle),最大连接数(maxActive),最大建立连接等待时间(maxWait)属性值。...第6步 – Tomcat原生库 Tomcat原生库基于Apache可移植运行时(Apache Portable Runtime简称APR),给程序员提供了超强扩展性和性能,在产品运作中帮助融合原生服务器技术以展现最佳性能

71220

HttpClient使用不当,服务挂了,是时候系统学习一下了

背景 最近发生了两件事,觉得有必要系统学习一下ApacheHttpClient了。 事件一:联调微信支付接口,用到HttpClient,花时间整理了一番。...释放连接:无论执行方法是否成功,都必须释放连接。 以上便是使用HttpClient核心步骤:引入依赖、创建HttpClient对象、创建请求实例、设置请求参数、发送请求、获取请求结果、释放连接。...文章刚开始提到事件二,便是由于释放连接不当导致连接累积导致内存溢出。 了解了HttpClient使用步骤,就可以具体代码实现了。...这个过程也遵循了上面说到HttpClient使用步骤。 上述代码看似能够正常使用,但在执行过程中如果出现异常,则会出现连接无法正常释放,导致内存溢出问题。...} } } } 虽然代码复杂了一些,但此时无论是否出现异常,都可以将连接进行正常关闭,避免内存溢出。

1.3K10

java(优化20) httpClient简介

一、HttpClient是什么 HttpClientApache Jakarta Common 下子项目,可以用来提供高效、最新、功能丰富支持 HTTP 协议客户端编程工具包,并且它支持...HttpClient 已应用在很多项目中,比如 Apache Jakarta 上很著名另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。...创建 HttpClient 实例 2. 创建某种连接方法实例,在这里是GetMethod。在 GetMethod 构造函数中传入待连接地址 3....import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.GetMethod; import...,访问空间是连接机器域名,这对多域名主机会有一些麻烦.只有HttpClient连接中指定域名才是认证用域名。

81930

HttpClient入门学习一

2、org.apache.commons.httpclient.HttpClient与org.apache.http.client.HttpClient区别?...程序可通过该对象获取服务器响应内容。   6)、释放连接。无论执行方法是否成功,都必须释放连接。...连接超时及读取超时问题,httpClient在执行具体http请求时候 有一个连接时间和读取内容时间。   ...1)、HttpClient连接时间,所谓连接时间,是指HttpClient发送请求地方开始到连接上目标url主机地址时间,理论上是距离越短越快。   ...2)、HttpClient读取时间,所谓读取时间,是指HttpClient已经连接到了目标服务器,然后进行内容数据获取,一般情况 读取数据都是很快速,但是假如读取数据量大,或者是目标服务器本身问题

80420

HttpClient Timeout设置

总览 本教程主要讨论Apache HttpClient 4框架timeout设置。如果想学习HttpClient其他方面,请参考HttpClient教程。...前两个连接和socket超时参数,是最重要,但是获取一个连接超时设置在高负载情况下也同样重要,这也就是第三个参数不能忽略原因所在。...使用 HttpClient 设置完上面的参数之后,HttpClient还不能用来执行HTTP请求: HttpGet getMethod = new HttpGet("http://host:8080/...注意这2个异常连接超时返回异常:org.apache.http.conn.ConnectTimeoutException socket超时返回异常:java.net.SocketTimeoutExceptio...给这样域名设置超时是一个新挑战,仅仅是因为HttpClient将尝试连接到那个超时域名: HttpClient 获取域名IP列表 第一次尝试连接超时(由于我们超时配置) 第二次尝试连接也超时

7.3K30

HttpClient(二)HttpClient使用Ip代理与处理连接超时

一般我们搞爬虫 用都是 高匿代理IP;     那代理IP 从哪里搞呢 很简单 百度一下,你就知道 一大堆代理IP站点。 一般都会给出一些免费,但是花点钱搞收费接口更加方便。...http://www.xicidaili.com/ 上最新20条高匿代理IP,来保存到 链表中,当一个IP屏蔽之后获取连接超时时,   就接着取出 链表中一个IP,以此类推,可以判断当链表中数量小于...1.5、HttpClient连接超时及读取超时   httpClient在执行具体http请求时候 有一个连接时间和读取内容时间;   1)HttpClient连接时间     所谓连接时候 是HttpClient...发送请求地方开始到连接上目标url主机地址时间,理论上是距离越短越快,     线路越通畅越快,但是由于路由复杂交错,往往连接时间都不固定,运气不好连不上,HttpClient默认连接时间,据我测试...2)HttpClient读取时间     所谓读取时间 是HttpClient已经连接到了目标服务器,然后进行内容数据获取,一般情况 读取数据都是很快速,     但是假如读取数据量大,或者是目标服务器本身问题

2.4K80

解决org.apache.http.client.ClientProtocolException: URI does not specify a valid h

引言在进行网络通信时,使用Apache HttpClient是Java开发人员常见选择之一。...异常背后原因在开始解释异常原因之前,让我们先了解一下org.apache.http.client.ClientProtocolException异常和URI概念。...org.apache.http.client.ClientProtocolException:这是Apache HttpClient库中定义一个异常类,表示在处理HTTP协议时发生了错误。...这样,HttpClient就能正确解析URI,并执行HTTP请求,避免了异常发生。...根据实际需求选择GET、POST、PUT等方法,并设置正确请求头,以确保请求能够被服务器正确解析。检查网络连接可用性。如果网络不可用,HttpClient可能无法解析主机名,从而引发异常

90110
领券