err max number of clients reached 解決辦法

最近在開發的企業在線培訓和考試系統,開發中用到redis緩存,由於第一次用遇到了不少問題。而且網上的資料都不是很正規統一,查看資料和問題都是很零散。

一個月以前,開發中redis出現了“err max number of clients reached”,項目啓動失敗。當時我重啓了項目,修改了redis的最大連接數爲無限制,以爲問題很簡單。

現在一個月以後,問題又出現了,項目組的開發人員項目都啓動失敗報錯,我認爲這個問題需要重視下,如果投產了,問題再出現就麻煩了。

在網上查看大量的資料,還是找不到解決辦法。因爲項目平時不報錯,用了一個月左右的時間,問題再次出現,肯定是一個長期使用壓力造成的問題。

最後和同事討論,經同事提醒才發現是redis連接池在關閉項目的時候,需要收回連接池,不然redis在開發的過程中,所有開發人員本地項目連接redis服務器,經常重啓項目會累積很多不能釋放的連接,

代碼如下:

[java] view plain copy
  1. <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">   
  2.     <property name="testWhileIdle" value="true"/>  
  3. </bean>  
  4. <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">  
  5.     <constructor-arg ref="jedisConfig" />  
  6.     <constructor-arg value="localhost" />  
  7.     <constructor-arg type="int" value="6379" />   
  8. </bean>  

其中destroy-method="destroy",是關閉web容器的時候,會調用連接池的destroy,關閉和redis的連接,就此隱藏兩個月的問題終於解決了。
發佈了51 篇原創文章 · 獲贊 24 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章