
Redis Time out問題實務心得
wordsCount: 691
readingTime: 2 mins
viewers:
緣起
工作上接手一個redis相關專案,幫專案做一些優化與維護,分享一些實務經驗,該專案只是單純將資料push到redis,然後由其他服務pop出來處理
前言
多個docker和redis服務,都是放同機器上
問題
上prod之前,最後的test環境,都已經過壓測,對於redis的time out時間設定(ctx,read,write,pool),已經找到合理的值,
在redis server端,有做AOF和RDB,確保資料不會遺失,到prod後的部署階段,發現程式會一直出現time out問題,
但test環境用的是同一顆image, redis的conf和版本環境都一樣,兩邊要push的資料大小和速度都是ㄧ致,當下找問題花了蠻多時間
解決
後來發現是資源競爭造成,因為該機器上有多個docker服務,在test環境,這些服務並不一定同時間有被壓測,但在prod環境部署階段,
在有限部署時間內,大家都想要確認沒問題,這些服務都同時間被壓測,導致硬碟IO過高,影響redis AOF和RDB的備份速度,
回頭影響單線程的redis服務,導致time out,後來直接對redis的docker做硬碟限制,也成功還原出狀況
後記
雖然redis是記憶體DB,其問題癥結點有用AOF和RDB時,當硬碟資源不夠時,就會影響運行,當問題常常出現,就要考慮把redis獨立出來,避免和其他服務搶資源
事後回想,應該在test環境做系統及壓測,但機器上有其他部門的服務在上面,如何溝通協調,每次有改動,要求他們配合,這可能又是另一個挑戰了
還是應該從主動限制docker資源下手,去估算自己寫的服務可能的表現,避免影響其他服務
Table of Contents
Related Posts
Synchronization Problem [ㄧ] Lock
共享資源 優點: 減少記憶體使用量,因為多個協程或線程可以用同一個資源。 提高速度,因為資源已經存在,而不
2025-7-27
優雅停止程式2
Go 實作Demo 單一goroutine的優雅停止,當接收到中斷信號時,能夠讓程式在完成當前任務後正常退
2025-7-27
WebSocket
緣由 因寫side project重新接觸到WebSocket,順便理清以前模糊的概念 關於WebSock
2025-5-11
優雅停止程式
緣由 因為工作加入新專案,看到對停止程式有專門做處理,才回頭思考自己對這部分的研究不足 關於OS訊號 通常
2025-5-11
Architecture_Patterns_With_Python基礎概念
Value Object 值物件 定義:單存資料,沒有特定身份,通常讓他不可變 兩個物件相等的條件是:所有值相等 python 實作方式 dataclass 例
2024-9-1
Sponsor
Wechat
Alipay
