1. 程式人生 > >併發高訪問下redis錯誤使用問題

併發高訪問下redis錯誤使用問題

問題描述

    雙十一本來是單身人事的狂歡party,網路購物搶去了熱點。我們公司是網際網路教育型別公司,主要銷售培訓課程,成交量在網際網路教育線上交易可以達到前三名。大家都在萬眾矚目的期待著使用者量的下單,凌晨12點之後,使用者量暴增,此時尷尬問題出現了,出現了一個技術故障,使用者無法下單,當時老大火冒三丈!經過查詢發現redis報Could not get a resource from the pool,資源一直不釋放,並且叢集中的單臺redis連線量很高,技術都慌了,大家開始定位問題所在,因為購物車和促銷優惠服務都用到redis。

解決問題:

    最開始以為是redis叢集負載高或者是專案服務連線redis的配置引數導致,各種更改最大連線數、連線等待數,雖然報錯資訊頻率有所緩解但是還是持續報錯。

     後來經過線下測試,發現促銷活動,存放redis中的字元很大,平均1s返回資料,並且redis中的key是一個常量值,hash命中叢集機器的時候,只有其中一臺連線數很高。“Could not get a resource from the pool”這個錯誤已經深深的印在腦海裡。

      臨時處理辦法,情況萬分緊急,因為這個資料活動期間不會變更活動策略,把redis資料第一次放入static全域性變數中,修改上線問題解決!

     報Could not get a resource from the pool錯誤原因有很多,配置錯誤或者客戶端連線工具報錯不釋放連線都會引起,請跟進具體情況分析問題。希望對大家有用,切記redis是快取工具,使用時應該利用快速響應,儲存簡單資料,不遵循這個邏輯很容易出現問題。