問題描述
PHP應用再連接Azure Redis服務時,出現Connection Timed out,當通過升級提高Azure Redis的性能時候,發現之前的資料丟失了,

問題解答
當Redis服務出現Timeout的情況時,可以從Redis服務的指標(Metrics)開始查看,如果出現負載(Service Load)很高的情況,表明當前Redis服務的資源已經不能滿足業務需求,需要提升服務端的等級,比如Redis定價層由 基礎層 ------》 標準層 ------》高級層 ,

當在升級的時候,為什么會發生資料丟失呢?
這是因為最開始使用的Redis服務為價格最便宜的基礎層,即底層只有一個實體,升級的時候Redis中的資料都會丟失,

附錄1:如果Service Load并不高的情況下,還是會發生Timeout問題,那么這樣應該如何進一步分析問題呢?
可以應用主機上通過 tcpdump 或 netstat 協助分析網路情況,
- tcpdump 抓取網路日志并生成 redis.cap 輸出檔案
# tcpdump 抓取網路包 Linux 環境主機中 apt-get update apt-get -y install tcpdump #抓包命令為: ## non SSL 6379 tcpdump port 6379 -w redis.cap ## SSL 6380 tcpdump port 6380 -w redis.cap
- 通過netstat可以查看當前TCP連接的情況

參考資料
縮放 Azure Cache for Redis 實體: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-scale#how-does-scaling-work
當在復雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生, 云中,恰是如此!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550346.html
標籤:其他
上一篇:在國內如何輕松用上GPT4介面?
