天天看點

高訪并發下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是緩存工具,使用時應該利用快速響應,存儲簡單資料,不遵循這個邏輯很容易出現問題。

繼續閱讀