搜尋
首頁資料庫RedisRedis阻塞原因詳解

Redis阻塞原因詳解

Nov 29, 2019 pm 03:56 PM
redis

Redis阻塞原因詳解

發現阻塞

線上應用服務最先感知到,可在應用方加入異常統計並透過郵件、簡訊、微信警報。

借助日誌系統,統計異常和觸發警報邏輯

借助Redis監控系統發現阻塞問題,觸發警報。推薦CacheCloud系統。

內在原因

API或資料結構使用不合理

對於高並發場景,避免在大物件上執行演算法複雜度超過O(n)O(n)的命令。

發現慢查詢:slowlog get {n}

發現大物件:redis-cli -h{ip} -p{port} bigkeys

##CPU飽和

CPU飽和指redis把單核心CPU跑到100%。

top指令查看redis程式CPU使用率

redis-cli -h{ip} -p{port} –stat取得目前redis使用情況,判斷並發是否達到極限

info commandstats 分析指令不合理開銷時間,可能過度記憶體最佳化

持久化阻塞

1、fork阻斷

發生在RDB或AOF重寫時,redis主執行緒呼叫fork產生子程序完成持久化檔案重寫

使用info stats指令取得lastest_fork_usec指標,表示redis最近一次fork操作耗時

2、AOF刷盤阻塞

開啟AOF,檔案刷盤一般每秒一次,硬碟壓力過大時,fsync需要等待寫入完成

查看redis日誌或info persistence統計中的aof_delayed_fsync指標

可使用iotop差可能哪個程序消耗過多的硬碟資源

3、HugePage寫操作阻塞

對於開啟Transparent HugePages的作業系統,每次寫入指令所引起的複製記憶體頁單位由4KB變成2MB

會拖慢寫入操作的執行時間,導致大量寫入操作慢查詢

外在原因

CPU競賽

1、進程競爭:redis是典型的CPU密集型應用程式。使用top、sar指令定位CPU消耗的時間點和行程

2、綁定CPU:常見最佳化是把redis行程綁定到CPU上,較低CPU上下文切換開銷,如果fork子程序做了CPU綁定,則父子程序存在激烈的CPU競爭,極大影響redis穩定性。

記憶體交換

如果作業系統把redis使用的記憶體換出到硬碟上,會導致交換後的redis效能急遽下降。

識別redis記憶體交換的檢查方法:

1、查詢redis進程號

redis-cli info server | grep process_id

2、根據進程號查詢記憶體交換資訊

cat /proc/{process_id}/smaps | grep Swap

如果交換量都是0KB或個別4KB,是正常現象。

預防記憶體交換:

1、確保機器充足的可用記憶體

2、確保所有redis範例設定最大可用記憶體(maxmemory),防止極端情況下redis內存不可控的成長

3、降低系統使用swap優先權,如echo 10>/proc/sys/vm/swappiness

網路問題

#1、連線拒絕

網路閃斷:一般在網路割接或頻寬耗盡的情況

redis連線拒絕:

連線數大於maxclients時拒絕新的連線進入,info stats的rejected_connections指標

客戶端存取redis盡量採用NIO長連線或連線池的方式

redis用於大量分散式節點存取且生命週期較短的場景(如Map/Reduce)時,建議設定tcp-keepalive和timeout參數讓redis主動檢查和關閉無效連線

連線溢位:

進程限制:進程可開啟最大檔案數控制,ulimit -n,通常1024,大量連接的redis需要增加該值

backlog隊列溢出:系統對於特定端口tcp連接使用backlog隊列保存,redis預設511,系統backlog預設128,線上可使用cron定時執行netstat -s | grep overflowed統計

2、網路延遲

#測量機器之間網路延遲

redis-cli -h{ip} -p{port} –latency
redis-cli -h{ip} -p{port} –latency-history 默认15秒完成一行统计,-i控制采样时间
redis-cli -h{ip} -p{port} –latency-dist 统计图展示,每1秒采样一次

3、網路卡軟體中斷

#單一網路卡佇列只能使用一個CPU,高併發下網卡資料互動都集中在同一個CPU,導致無法充分利用多核心CPU的情況。

一般出現在網路高流量吞吐的場景

更多redis知識請關注

redis入門教學專欄。

以上是Redis阻塞原因詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
REDIS:探索其功能和功能REDIS:探索其功能和功能Apr 19, 2025 am 12:04 AM

Redis脫穎而出是因為其高速、多功能性和豐富的數據結構。 1)Redis支持字符串、列表、集合、散列和有序集合等數據結構。 2)它通過內存存儲數據,支持RDB和AOF持久化。 3)從Redis6.0開始引入多線程處理I/O操作,提升了高並發場景下的性能。

Redis是SQL還是NOSQL數據庫?答案解釋了Redis是SQL還是NOSQL數據庫?答案解釋了Apr 18, 2025 am 12:11 AM

RedisisclassifiedasaNoSQLdatabasebecauseitusesakey-valuedatamodelinsteadofthetraditionalrelationaldatabasemodel.Itoffersspeedandflexibility,makingitidealforreal-timeapplicationsandcaching,butitmaynotbesuitableforscenariosrequiringstrictdataintegrityo

REDIS:提高應用程序性能和可擴展性REDIS:提高應用程序性能和可擴展性Apr 17, 2025 am 12:16 AM

Redis通過緩存數據、實現分佈式鎖和數據持久化來提升應用性能和可擴展性。 1)緩存數據:使用Redis緩存頻繁訪問的數據,提高數據訪問速度。 2)分佈式鎖:利用Redis實現分佈式鎖,確保在分佈式環境中操作的安全性。 3)數據持久化:通過RDB和AOF機制保證數據安全性,防止數據丟失。

REDIS:探索其數據模型和結構REDIS:探索其數據模型和結構Apr 16, 2025 am 12:09 AM

Redis的數據模型和結構包括五種主要類型:1.字符串(String):用於存儲文本或二進制數據,支持原子操作。 2.列表(List):有序元素集合,適合隊列和堆棧。 3.集合(Set):無序唯一元素集合,支持集合運算。 4.有序集合(SortedSet):帶分數的唯一元素集合,適用於排行榜。 5.哈希表(Hash):鍵值對集合,適合存儲對象。

REDIS:對其數據庫方法進行分類REDIS:對其數據庫方法進行分類Apr 15, 2025 am 12:06 AM

Redis的數據庫方法包括內存數據庫和鍵值存儲。 1)Redis將數據存儲在內存中,讀寫速度快。 2)它使用鍵值對存儲數據,支持複雜數據結構,如列表、集合、哈希表和有序集合,適用於緩存和NoSQL數據庫。

為什麼要使用redis?利益和優勢為什麼要使用redis?利益和優勢Apr 14, 2025 am 12:07 AM

Redis是一個強大的數據庫解決方案,因為它提供了極速性能、豐富的數據結構、高可用性和擴展性、持久化能力以及廣泛的生態系統支持。 1)極速性能:Redis的數據存儲在內存中,讀寫速度極快,適合高並發和低延遲應用。 2)豐富的數據結構:支持多種數據類型,如列表、集合等,適用於多種場景。 3)高可用性和擴展性:支持主從復制和集群模式,實現高可用性和水平擴展。 4)持久化和數據安全:通過RDB和AOF兩種方式實現數據持久化,確保數據的完整性和可靠性。 5)廣泛的生態系統和社區支持:擁有龐大的生態系統和活躍社區,

了解NOSQL:Redis的關鍵特徵了解NOSQL:Redis的關鍵特徵Apr 13, 2025 am 12:17 AM

Redis的關鍵特性包括速度、靈活性和豐富的數據結構支持。 1)速度:Redis作為內存數據庫,讀寫操作幾乎瞬時,適用於緩存和會話管理。 2)靈活性:支持多種數據結構,如字符串、列表、集合等,適用於復雜數據處理。 3)數據結構支持:提供字符串、列表、集合、哈希表等,適合不同業務需求。

REDIS:確定其主要功能REDIS:確定其主要功能Apr 12, 2025 am 12:01 AM

Redis的核心功能是高性能的內存數據存儲和處理系統。 1)高速數據訪問:Redis將數據存儲在內存中,提供微秒級別的讀寫速度。 2)豐富的數據結構:支持字符串、列表、集合等,適應多種應用場景。 3)持久化:通過RDB和AOF方式將數據持久化到磁盤。 4)發布訂閱:可用於消息隊列或實時通信系統。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器