redis分布式鎖超時事故


redis分布式鎖有兩層超時:

1 鎖等待超時

2 tcp connection超時

 

任一個超時未設置,都有可能造成阻塞

 

事故如下:

 *disruptor采用阻塞模式,到最大消息池時即阻塞,導致線程阻塞

 

左下角,獲取redis鎖雖然使用了trylock立即返回,但是沒想到,由於斷網,redis客戶端在tcp層阻塞了,且未設置超時,阻塞隨着阻塞鏈傳遞到無界的single線程池,最終導致oom

 

解決方案:

1 redis部署內網,並在tcp redis鎖2個層面設置超時

2 線程池設置為有界,且配置放棄策略,這個方案雖然保障了jvm,但會有業務上的遺漏,比如行情到了,應該成交了,確被放棄了


免責聲明!

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



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