日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

redis中Could?not?get?a?resource?from?the?pool異常及解決方案_Redis

作者:yujkss ? 更新時間: 2023-01-10 編程語言

描述

這個錯誤產生的前提是這樣的,將數據存入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只允許接受本機的相應

運行代碼

//創建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

欄目分類
最近更新