1. 程式人生 > >解決jedis異常JedisConnectionException:Could not get a resource from the pool

解決jedis異常JedisConnectionException:Could not get a resource from the pool

伺服器上啟動了redis之後,用jedis連線發現報錯

 

異常的意思是獲取不到jedis的連線池,網上查了下,可能是因為連線不上redis伺服器導致的。

在stackoverflow上看到很多人說需要修改下redis配置檔案, 配置檔案裡有一行bind 127.0.0.1,意思是隻允許127.0.0.1(迴環地址)訪問redis服務,也就是不允許外界訪問,為了允許外網訪問,將127.0.0.1改成0.0.0.0,然後重啟redis服務(具體可參考部落格https://www.cnblogs.com/liusxg/p/5712493.html)。修改之後理論上外網可以訪問了,但是一執行還是報同樣的異常,說明還是不行。

然後猜測可能是到伺服器的網路不通導致,於是在命令列裡使用telnet命令去遠端連線伺服器的6379埠,發現不通,看來報錯的大致原因找到了!! 

 

 伺服器經過ping測試可以ping通,說明應該是6379埠被封了,那應該是防火牆的原因。(之前我只在阿里雲後臺控制檯防火牆列表那裡開放了6379埠,伺服器作業系統上應該沒有開放,因為阿里雲的伺服器貌似是有2層防火牆,一層需要在伺服器上開,一層去阿里雲控制檯開放)。

然後用 firewall-cmd --zone=public --add-port=6379/tcp --permanent 開啟埠,重啟防火牆(firewall-cmd --reload ),

再次使用telnet就能通了。

(我的伺服器系統是centOS7,其它系統開防火牆的命令可能不同。)