注意,这个只是一个解决java里报错“Could not get a resource from the pool”的一种方法,肯定还有其他的情况也导致了“Could not get a resource from the pool”,所以要不同原因不同分析。


今儿java开发的哥们找到我,说有一个模块要求增加到某个阿里redis的白名单,但是阿里云的redis是没有白名单这一说的。我问他你的模块报什么错误呢,他说他的模块在日志里显示了如下的内容:

wKiom1gtZEiTObfZAACT6rM6qaY213.png

出现了Could not get a resource from the pool的错误,出现了这个错误有很多种可能,一种比较常见的可能就是从redis里获取数据超时。于是就来到zk获取文件里,查看配置项,配置项如图:

wKiom1gtZqeQVyGYAABQfcZai98910.png


然后打开zk项,检查这个redis字段,zk里是这么写的:

wKioL1gtZzDx7c18AAARM06W8pw295.png


超时时间设定3000秒,肯定够用了,于是就检查一下其他项目。对比一下,host是对的上的,但是两个password是不一样的,但是这也是正常,因为在java里会对zk的密码进行二次加密。于是我就问了这位开发童鞋,“把你的代码给我,我看一下这个密码你加密了么?”这个时候他猛醒过来,在他的源代码里检查一下,果然他没有加密,密码对不上是无法登陆redis的,所以也会报“Could not get a resource from the pool”。再更改完代码并且重新上传之后,启动进程看到了正确的日志:

wKioL1gtaDvzD6H4AADNzCoMebE574.png


而我,微微一笑,深藏功与名...