高并发下restTemplate的错误分析

本文分析了高并发场景下restTemplate出现连接等待超时的问题,揭示其底层使用了apache httpClient的连接池。当并发量增大时,连接池资源不足。解决方案是通过配置restTemplate的连接池大小,如maxConnTotal和maxConnPerRoute,以适应业务需求,提高restTemplate在高并发下的性能表现。
摘要由CSDN通过智能技术生成

高并发下restTemplate的错误分析

1. 问题现象和分析

org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection

此问题很明显是连接等待超时,而且是从连接池中获取的连接。
那么就有一个很诧异的问题,这里哪来的连接池呢?然后我去跟踪restTemplate的源码发现,其底层是通过apache 的httpClient实现了连接池。那么问题就很明显了。就是在并发量高的时候,可能会出现连接池不够用。

2. 问题解决

  1. 既然分析出来是连接池不够了,那么我们在构建restTemplate的时候配置其底层的httpClient连接池大小,以便提高高并发的时候RestTemplate的性能。
  2. 可以通过配置总体最大连接池(maxConnTotal)和单个路由连接最大数(maxConnPerRoute),默认是(20,2)

maxConnTotal 是整个连接池的大小,根据自己的业务需求进行设置
maxConnPerR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值