記一次jedis並發使用問題JedisException: Could not return the resource to the pool


今天線上突然發現個奇怪的問題項目第一次啟動的時候redis報錯JedisException: Could not return the resource to the pool

直接訪問接口的時候不報錯,訪問頁面的時候報這個錯。而且只有項目重啟的時候才會報這個錯,剛開始以為接口問題,仔細分析頁面原來這個頁面同時加載了好多個接口這些接口都調用了一個方法。而這個方法正好依賴redis。線下自己寫個多線程訪問


問題出現了


getString 方法



getPool方法


問題來了這個getPool不是線程安全的然后又用了一個全局的

所以多線程情況下每個線程獲取的pool都不一樣然后jedis用完了鏈接返回去的pool不一樣導致出現問題。

找到問題了解決很簡單直接在getPool通過雙重校驗鎖可以解決、

或者配置信息可以加載靜態代碼塊。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM