現象:
在功能測試過程中發現redis隔一段時間就會超時,報錯信息如下:
io.lettuce.core.RedisCommandTimeoutException: Command timed out after 3 second(s)
排查:
根據提示,一開始以為是超時間設置問題,於是調大時間當依然沒用。
最后偶然發現在開發環境沒有問題,只在測試環境有問題,而二者環境的區別在於測試環境的內存已經滿了。
於是嘗試刪除部分緩存,使測試環境內存使用情況降低,然后觀察。確實就不會出現這個問題。
結論:
內存占滿后,redis無法再保存新的數據,同時會啟動內存清理策略,這個期間連接會有異常。