连接池中的maxidle和maxactive

【计算机三级-数据库技术】操作题大题(第1套) 从触发器的语法中可知,【1】处应该填写的是执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。使用FOR或AFTER选顶定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。实体的转换:在从ER图转换为关系模式时,一个实体转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。 阅读详情

目前项目中使用了redis连接池。最近的一次压测中发现如下问题:

org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool
    ......
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:502)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:748)
Caused by: redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool
	at redis.clients.util.Pool.getResource(Pool.java:51)
	at redis.clients.jedis.JedisSentinelPool.getResource(JedisSentinelPool.java:210)
	at redis.clients.jedis.JedisSentinelPool.getResource(JedisSentinelPool.java:17)
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:271)
	... 86 common frames omitted
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432)
	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:346)
	at redis.clients.util.Pool.getResource(Pool.java:49)
	... 89 common frames omitted

压测的参数如下:
在这里插入图片描述
2000并发,循环10次,启动50个服务。
Timeout waiting for idle object,由这个初次判断是等待空闲连接超时。于是第一个念头是连接数是不是太小了?于是查看连接池配置:

spring.redis.jedis.pool.max-idle=30
spring.redis.jedis.pool.min-idle=20
spring.redis.jeids.pool.max-active=50
spring.redis.jedis.pool.max-wait=3000

最大连接数(max-active)是50,对于并发那么高感觉是有点小了。于是把max-active改成了500,这下可够了吧?!
但实际压测结果来看,情况只比之前好一点点,原来的错误还是存在的。按照这个最大连接数500,部署了50个服务,也就是最大能承受25000个连接,但目前并发才2000个!检查了一下代码,连接每次执行完任务之后都会释放,那这哪里出了问题呢?
思考了很久,注意到了max-idle参数,突然想到一个问题,如果这个值设太小(30个),但是最大连接数max-active设得太高(500个),那么每次单服务连接数到达30之后,后面的连接执行完任务之后都会被销毁,然后再重新建立连接,重复的太多的销毁和新建连接,瓶颈就在这里!
为了证明猜想,把max-idle设置为300,max-active还是保留500。按照之前的压测配置进行压测了几次,果然不出问题了,再尝试着把并发量调高点,也不会出错了!
问题到此解决!
由此,得出了一个结论,maxactive和maxidle这两个值最好设置得比较接近一些,不然maxidle设置得太小,单方面把maxactive调得很高,这样会导致频繁的连接销毁和新建,这跟连接池的理念就相悖了。为了提高性能,把maxactive调高,maxidle也相应调到一个接近的数字,池中空闲的连接就会维持一个适当的数量,才达到较理想的性能调优。除了redis连接池,其他连接池比如数据库连接池也同理可得。

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南 本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。 阅读详情

相关推荐

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

java连接池的maxIdle该如何配置

java连接池的maxIdle该如何配置 maxIdle值与maxActive值应配置的接近。 因为,当连接数超过maxIdle值后,刚刚使用完的连接(刚刚空闲下来)会立即被销毁,若maxIdle与maxActive相差较大,在高负载的系统中会导致频繁的创建、销毁连接,连接数在maxIdle与maxActive间快速频繁波动, 高负载系统的maxIdle值可以设置为与maxActive相同或设置...

茄子的博客 1万+

Mac新手必看:为什么你的终端找不到Python命令?5分钟搞定zsh报错

本文针对Mac用户在终端遇到“zsh: command not found: python”报错的问题,提供了深度解析与实战修复指南。文章解释了macOS系统因历史原因默认使用`python3`而非`python`命令,并详细介绍了四种解决方案:养成使用`python3`的习惯、创建别名、通过Homebrew安装链接以及修改PATH环境变量,帮助新手快速解决zsh报错,顺利开始Python开发。

weixin_29248653的博客 594

连接池中 maxActive,maxWait,maxAge,maxIdel参数

前言 连接池本质作用是为客户端提供连接复用,提升连接效率,降低系统开销。Tomcat的连接池提供了maxActive,maxWait,maxIdle,minIdle,initialSize等参数,配置连接池的大小,用户根据自身业务需求配置这几个参数。同时,因为对端数据库服务器状态不受tomcat控制,所以tomcat需要有检查连接可用性的机制,通过testOnBorrow,testWhileIdl...

daponi的博客 2万+

深入解析Docker Overlay2磁盘空间占用问题及高效清理策略

本文深入解析了Docker Overlay2存储驱动导致磁盘空间占用的核心原因,包括镜像与容器残留、日志文件膨胀、应用层泄漏及驱动特性。提供了从全局检查到精准定位的完整排查方法,并给出了从常规清理到配置优化的多维度高效清理策略,帮助用户从根本上解决Docker磁盘空间问题。

data3的博客 900

【openEuler容器镜像部署指南】

【代码】【List集合排序 】

weixin_43878094的博客 1111

maxIdle和maxIdle和maxWait

maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连 接将被标记为不可用,然后被释放。设为0表示无限制。 maxIdle,连接池的最大数据库连接数。设为0表示无限制。 maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示 无限制。 *maxActive:最大连接数据库连接数,设 0 为没有限制  *maxIdle:最大等待连接中的数量,

东哥的博客 3212

Power domain 划分该如何下手

假如PD1比PD3更always on的话,我们只需要插入普通buffer即可,因为PD3 on,PD1也肯定是ON,PD1 off,PD3肯定时off,PD1能cover PD3的电源情况,因此使用普通buffer也可,但是处于省电角度,我们还是使用AO buffer;在我们做多power domain时,在切分power domain时,需要谨慎,稍有不慎,就会出现congestion以及timing问题,那问题来了,我们在切分power domain时有什么考究么,今天小编就和大家一起讨论讨论。

芯冰乐 206

连接池中最大的活动连接数 max-active 的作用及含义

连接池中最大的活动连接数 max-active 的作用及含义

YHLSunshine的博客 1911

深入解析:AndroidManifest.xml 与 Qt 6.7.0 的整合

本文探讨了在Qt 6.7.0和CMake构建Android应用时,AndroidManifest.xml未被正确识别的问题。通过分析CMake配置错误、文件路径问题等可能原因,提出了在CMakeLists.txt中明确指定路径、确保目录结构正确等解决方案,并给出了示例项目演示。文章强调正确配置AndroidManifest.xml对获取权限和应用功能的重要性,为Qt开发者提供了实用的调试建议。

2501_90323865的博客 109

CST与MATLAB连接设置

打开MATLAB,点击"Set Path"按钮,然后点击"Add Folder"。在CST中,点击"Options"菜单,然后选择"Advanced"选项。在弹出的对话框中,点击"COMSOL"选项卡,并确保"Enable COMSOL"复选框被选中。通过上述步骤和示例代码,你可以开始使用MATLAB与CST进行集成,并根据你的具体需求进行进一步的开发和应用。通过这个简单的示例,你可以开始在MATLAB中与CST进行交互,并根据你的需求进行更复杂的操作,如参数化仿真、优化和数据处理等。

TechPulseZ的博客 1966

连接池中的maxIdle,MaxActive,maxWait参数

连接池中的参数介绍: name:表示你的连接池的名称也就是你要访问连接池的地址 auth:是连接池管理权属性,Container表示容器管理 type:是对象的类型 driverClassName:是数据库驱动的名称 url:是数据库的地址 username:是登陆数据库的用户名 password:是登陆数据库的密码 maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连 接将被标记为不可用,然后被释放。设为0表示无限制。 MaxActive,连接池的最大数据库连接数。设为0表示无限制

weixin_45439637的博客 1438

【python三维深度学习】python三维点云从基础到深度学习

从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。

叶子的博客 2万+

连接池中的maxIdle MaxActive maxWait参数

连接池中的maxIdle MaxActive maxWait参数

qq_44945073的博客 713

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数据库连接池中的maxIdle,MaxActive,maxWait参数

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

weixin_34233856的博客 5500

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

连接池中的maxIdle,MaxActive,maxWait等参数详解

转: 连接池中的maxIdle,MaxActive,maxWait等参数详解 2017年06月03日 15:16:22 阿祥小王子 阅读数:6481 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/danielzhou888/article/details/72852215 敬请关注博客,后期不断更新优质博...

weixin_30263277的博客 468

连接池中的MaxActive,MaxIdle,MaxWait参数

maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连 接将被标记为不可用,然后被释放。设为0表示无限制。 MaxActive,连接池的最大数据库连接数。设为0表示无限制。 maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示 无限制。 *maxActive:最大连接数据库连接数,设 0 为没有限制 *maxIdle:最大等待连接中的数

592

[tomcat] 连接池参数maxActive、maxIdle 、maxWait 等

[tomcat] 连接池参数maxActive、maxIdle 、maxWait 等 maxActive 连接池支持的最大连接数,这里取值为20,表示同时最多有20个数据库连接。设 0 为没有限制。 maxIdle 连接池中最多可空闲maxIdle个连接 ,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。设 0 为没有限

明确目标,明白做事,努力就有机会。 2128

go-redis连接池相关参数MaxIdle、IdleTimeout、MaxActive

go-redis中连接池以及相关参数使用笔记 参数说明: MaxIdle: 最大空闲连接数;没有redis操作时依然可以保持这个连接数量,但要在IdleTimeout的时间范围内,不然就会关闭,结合IdleTimeout进行理解; MaxActive:最大连接数,一般为0,代表不限制;同一时间最多有这么多的连接,包括连接池中的连接以及连接池外的连接,加入最大空闲MaxIdle设置3,MaxActive设置5,那么,当连接池的连接全部处于忙碌状态时,还可以再额外创建一个连接,当该连接关闭时,如果连接池中空闲数

苑先森的博客 7758
上一篇: maven项目用eclipse打包发布的问题(No compiler is provided in this environment!)
下一篇: 码农的书法窝
H阿布
博客等级 码龄12年 24粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值