connection pool exhausted
1.发现问题
生产环境发现有一些redis报错日志 connection pool exhausted。如果redis中没有数据 就直接回源 查DB。暂时不会有什么大问题。中文意思是连接池耗尽。
2.追踪问题
查看源码
我们用的redis客户端类似于redigo 按照错误提示搜索到了一段代码(基于最新的redigo 源码版本分析)
// Handle limit for p.Wait == false.if !p.Wait && p.MaxActive > 0 && p.active >= p.MaxActive {p.mu.Unlock()return nil, ErrPoolExhausted}
源码解析
这段代码的意思是 如果没有配置为等待模式。且配置了连接池的最大活跃个数 如果当前活跃个数大于配置的最大活跃 则返回连接池耗尽的错误。所以需要调大这个MaxActive参数。
MaxIdle 参数
除了MaxActive 之外还有一个MaxIdle参数。
func (p *Pool) put(pc *poolConn, forceClose bool) error {p.mu.Lock()if !p.closed && !forceClose {pc.t = nowFunc()p.idle.pushFront(pc)if p.idle.count > p.MaxIdle {pc = p.idle.backp.idle.popBack()} else {pc = nil}}if pc != nil {p.mu.Unlock()pc.c.Close()p.mu.Lock()p.active--}if p.ch != nil && !p.closed {p.ch <- struct{}{}}p.mu.Unlock()return nil}
连接池的具体实现是通过一个链表来实现的。如果发现连接池里面的空闲个数超过了MaxIdle,就会把尾部的连接删除 把最新的连接放到头部。类似将老的连接删掉,加入最新的。
3.解决问题
最终通过调大 MaxActive 和 MaxIdle 参数解决了连接池耗尽的问题
connection pool exhausted相关推荐
- Cannot get a connection, pool exhausted, cause: ValidateObject failed
连接池突然不能使用了,重启应用仍然报连接池耗尽,最后debug发现是有人创建了dual表,导致校验语句select 1 from dual返回值为空,而无法通过连接池的连接校验. Caused by: ...
- com.atomikos.jdbc.AtomikosSQLException: Connection pool exhausted
异常: 2020-01-09 18:30:48.072 ERROR 10212 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] ...
- psycopg2.pool.PoolError: connection pool exhausted
psycopg2.pool 数据库连接池用完的两种情况: sql报错, 导致数据库的链接putconn失败, 没有将conn添加到数据连接池中 真的有那么连接建立, 假设连接池有100个数据库连接, ...
- .Net与Oracle地数据库连接池(Connection Pool)
.Net与Oracle的数据库连接池(Connection Pool) 概述: 数据库连接池允许应用程序重用已存在于池中的数据库连接,以避免反复的建立新的数据库连接.这种技术能有效提高应用程序的伸缩性 ...
- java.lang.IllegalStateException: Connection pool shut down
最近使用HttpClient 4.5 使用 CloseableHttpClient 发起连接后,使用CloseableHttpResponse 接受返回结果,结果就报错了,上网查了下,有位stacko ...
- Cannot get a connection, pool error Timeout waiting for idle object (获取不到数据库连接)...
今天项目中遇到一个问题,一个定时器一段时间就会报错,一段时间又正常,错误如下: Caused by: org.hibernate.exception.GenericJDBCException: Can ...
- Connection pool shut down http请求异常关闭
本人在项目运用中写了一个数据推送的组件,需要多线程频繁调用远程接口进行传输数据,远程请求通过HttpClient 使用 CloseableHttpClient 发起连接后,使用CloseableHtt ...
- 多线程下httpClient报错 Connection pool shut down
报错信息 1.报错信息:Connection pool shut down java.lang.IllegalStateException: Connection pool shut downat o ...
- 阿里oss上传,读取报错:Connection pool shut down
Connection pool shut down报错: 今天springboot配置了阿里oss配置类:就一直报错: com.aliyun.oss.ClientException: Connecti ...
- 数据库连接池 Connection Pool 是什么,做什么
重新拾起Java来学,就遇到了一本不错的书<Hibernate 深入浅出>电子工业出版社,相较其他的工具类书,本书中用词更加生动活泼,从字句之间就可以看出作者的用心与深厚的文字功底,让人相 ...
最新文章
- Lucene.net常见功能实现知识汇总
- Python使用request包请求网页乱码解决方法
- LeetCode每日一题 977. 有序数组的平方
- mysql几个timeout参数_MySQL中 timeout相关参数解析
- Day Two(Beta)
- stm32f103移植到f0_STM32F042替换STM32F103
- 灯亮怎么办_车辆隔音效果不好怎么办?
- 目前计算机应用最广泛的区域是,自考《计算机应用基础》试题练习(一)
- SpringBoot使用AutoConfiguration自定义Starter
- rviz可视化点云_ROS_PCL+Rviz创建点云并三维显示
- python中0x3f_Python学习笔记(一):基本数据类型
- 2020-8-4 Codeforces摸鱼报告
- python读取raw数据文件_pythonrawkit如何从原始文件读取元数据值?
- Solr分组聚合查询之Facet
- 电脑变时钟,防止消息游戏新闻的打扰,形成高效率的办公和学习
- 解决HTML5页面在手机浏览器测试中发现 横向滚动条,尽管页面没有内容也是照常出现。
- 浏览器无法打开网页-重置网络命令
- 2022年东北大学计算机考研复试最低分数线
- 安装sqlserver2016报错
- 《深入浅出SQL》问答录
热门文章
- linux 内存管理(8) —内存描述符(mm_struct)
- 端午节之苍南懒人游 (*^__^*) ……
- 移动端页面底部导航被浏览器工具栏遮盖解决方法
- 成品、预售、老店翻新、教练:邀约话术(绝干干货)-健身房管理系统结捷径系统
- zoj 3551 Bloodsucker 概率DP
- [CnPeng说]低代码并不Low
- CODE【VS】2809 盗窃-月之眼
- 一位16年老员工的反思:什么才是真正的执行力?
- (翻译)社会认同模式(Social proof)
- becon帧 wifi_beacon帧