服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - redis中Could not get a resource from the pool异常及解决方案

redis中Could not get a resource from the pool异常及解决方案

2022-12-13 17:09yujkss Redis

这篇文章主要介绍了redis中Could not get a resource from the pool异常及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

描述

这个错误产生的前提是这样的,将数据存入redis(新安装的)中,在通过连接池获取jedis实例时,产生如下错误( Could not get a resource from the pool)。

分析

由于是新安装的redis,配置文件没有更改,低级的错误浪费不少时间,写一篇文章,让同样犯这种错误的朋友别再浪费时间。

解决

更改配置文件 redis.conf 中两处

1.将 bind 127.0.0.1 注释掉

2.将 protected-mode 改为 no

bind 127.0.0.1 protected-mode
默认情况bind=127.0.0.1只能接受本机的访问请求不写的情况下,无限制接受任何ip地址的访问 如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的相应

redis中Could not get a resource from the pool异常及解决方案

redis中Could not get a resource from the pool异常及解决方案

运行代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//创建jedis配置文件对象
val jedisPoolConfig = new JedisPoolConfig()
//添加配置信息
jedisPoolConfig.setMaxTotal(100)
jedisPoolConfig.setMaxIdle(20)
jedisPoolConfig.setMinIdle(0)
jedisPoolConfig.setBlockWhenExhausted(true)
jedisPoolConfig.setMaxWaitMillis(500)
jedisPoolConfig.setTestOnBorrow(true)
//创建连接池对象
var jedisPool:JedisPool = new JedisPool(jedisPoolConfig,"linux1",6379)
//获取实例
jedisPool.getResource

报错内容

ERROR --- [           Executor task launch worker for task 15]  org.apache.spark.executor.Executor                                              (line:   91)  :  Exception in task 7.0 in stage 2.0 (TID 15)
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    at redis.clients.util.Pool.getResource(Pool.java:53)
    at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
    at com.atguigu.bigdata.sparkmall.common.RedisUtil$.getJedisClient(RedisUtil.scala:26)
    at com.atguigu.bigdata.sparkmall.realtime.Req7TimeAdvertClickTrendApplication$$anonfun$main$1$$anonfun$apply$2.apply(Req7TimeAdvertClickTrendApplication.scala:54)
    at com.atguigu.bigdata.sparkmall.realtime.Req7TimeAdvertClickTrendApplication$$anonfun$main$1$$anonfun$apply$2.apply(Req7TimeAdvertClickTrendApplication.scala:53)
    at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
    at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1951)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1951)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
    at org.apache.spark.scheduler.Task.run(Task.scala:99)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:322)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
    at redis.clients.jedis.Connection.connect(Connection.java:207)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
    at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
    at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
    at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
    at redis.clients.util.Pool.getResource(Pool.java:49)
    ... 14 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at redis.clients.jedis.Connection.connect(Connection.java:184)
    ... 21 more

其他原因

1.最大链接数量超标,资源未回收jedis.close();//释放资源

2.压根redis服务没有起 (很多人是这种)

3.可能是linux防火墙问题造成的 检查网络是否畅通

4.检查IP地址或端口是否错误

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_39900031/article/details/110123001

延伸 · 阅读

精彩推荐
  • RedisRedis如何实现分布式锁

    Redis如何实现分布式锁

    相信大家对锁已经不陌生了,本文主要介绍了Redis如何实现分布式锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参...

    公众号程序员学长10532021-09-17
  • RedisRedis数组和链表深入详解

    Redis数组和链表深入详解

    这篇文章主要介绍了Redis数组和链表深入详解,这是redis的基础的知识点,有感兴趣的同学可以学习下...

    Tsing7132021-07-27
  • Redis如何利用 Redis 实现接口频次限制

    如何利用 Redis 实现接口频次限制

    这篇文章主要介绍了如何利用 Redis 实现接口频次限制,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    你的小可爱吖7062021-07-25
  • RedisRedis教程(二):String数据类型

    Redis教程(二):String数据类型

    这篇文章主要介绍了Redis教程(二):String数据类型,本文讲解了String数据类型概述、相关命令列表、命令使用示例三部分内容,需要的朋友可以参考下 ...

    Redis教程网5722019-10-23
  • RedisCentOS6.4 安装Redis 教程详解

    CentOS6.4 安装Redis 教程详解

    这篇文章主要介绍了CentOS6.4 安装Redis 教程详解,需要的朋友可以参考下 ...

    chen20135992019-11-06
  • RedisRedis命令使用技巧之Keys的相关操作

    Redis命令使用技巧之Keys的相关操作

    Redis KEYS命令用于搜索具有匹配模式的键。下面这篇文章主要给大家介绍了关于Redis命令使用技巧之Keys的相关资料,文中通过示例代码介绍的非常详细,需要...

    Jackeyzhe4892019-11-18
  • Redis银河麒麟V10sp1服务器系统安装redis不能使用的快速解决办法

    银河麒麟V10sp1服务器系统安装redis不能使用的快速解决办法

    这篇文章主要介绍了银河麒麟V10sp1服务器系统安装redis不能使用的快速解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值...

    PKS生态服务平台15662021-02-26
  • RedisRedis数据过期策略的实现详解

    Redis数据过期策略的实现详解

    最近项目当中遇到一个需求场景,需要清空一些存放在Redis的数据,本文对Redis的过期机制简单的讲解一下,具有一定的参考价值,感兴趣的小伙伴们可以参...

    法号阿兴9412021-11-17