<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前兩天去美團面試的陳同學回來了,看他滿臉洩氣的樣子,準是沒拿到 Offer。
聽了他面試的經過,真替他感到惋惜。究其原因,是被一道面試題攔住了去路:看你簡歷上寫著精通 Redis,請你總結一下 Redis 中存在的阻塞問題吧。
正好阿Q這幾天正在研究 Redis,就順便在這兒給大家做個總結。
使用不當的命令造成使用者端阻塞:
這些命令時間複雜度是O(n),有時候也會全表掃描,隨著n的增大耗時也會越大從而導致使用者端阻塞。
大家都知道 Redis 在進行 RDB 快照的時候,會呼叫系統函數 fork() ,建立一個子執行緒來完成臨時檔案的寫入,而觸發條件正是組態檔中的 save 設定。
當達到我們的設定時,就會觸發 bgsave 命令建立快照,這種方式是不會阻塞主執行緒的,而手動執行 save 命令會在主執行緒中執行,阻塞主執行緒。
當 Redis 直接記錄 AOF 紀錄檔時,如果有大量的寫操作,並且設定為同步持久化
appendfsync always
即每次發生資料變更會被立即記錄到磁碟,因為寫磁碟比較耗時,效能較差,所以有時會阻塞主執行緒。
BGREWRITEAOF
命令時,Redis 伺服器會維護一個 AOF 重寫緩衝區,該緩衝區會在子執行緒建立新 AOF 檔案期間,記錄伺服器執行的所有寫命令。阻塞就是出現在第2步的過程中,將緩衝區中新資料寫到新檔案的過程中會產生阻塞。
AOF 的紀錄檔記錄不像關係型資料庫那樣在執行命令之前記錄紀錄檔(方便故障恢復),而是採用先執行命令後記錄紀錄檔的方式。
原因就是 AOF 記錄紀錄檔是不會對命令進行語法檢查的,這樣就能減少額外的檢查開銷,不會對當前命令的執行產生阻塞,但可能會給下一個操作帶來阻塞風險。
這是因為 AOF 紀錄檔也是在主執行緒中執行的,如果在把紀錄檔檔案寫入磁碟時,磁碟寫壓力大,就會導致寫盤很慢,進而導致後續的操作也無法執行了。
大 key 並不是指 key 的值很大,而是 key 對應的 value 很大。
大 key 造成的阻塞問題如下:
當我們在使用 Redis 自帶的 --bigkeys
引數查詢大 key 時,最好選擇在從節點上執行該命令,因為主節點上執行時,會阻塞主節點。
我們還可以使用 SCAN 命令來查詢大 key;
通過分析 RDB 檔案來找出 big key,這種方案的前提是 Redis 採用的是 RDB 持久化。網上有現成的工具:
刪除操作的本質是要釋放鍵值對佔用的記憶體空間。
釋放記憶體只是第一步,為了更加高效地管理記憶體空間,在應用程式釋放記憶體時,作業系統需要把釋放掉的記憶體塊插入一個空閒記憶體塊的連結串列,以便後續進行管理和再分配。這個過程本身需要一定時間,而且會阻塞當前釋放記憶體的應用程式。
所以,如果一下子釋放了大量記憶體,空閒記憶體塊連結串列操作時間就會增加,相應地就會造成 Redis 主執行緒的阻塞,如果主執行緒發生了阻塞,其他所有請求可能都會超時,超時越來越多,會造成 Redis 連線耗盡,產生各種異常。
刪除大 key 時建議採用分批次刪除和非同步刪除的方式進行。
清空資料庫和上面 bigkey 刪除也是同樣道理,flushdb、flushall 也涉及到刪除和釋放所有的鍵值對,也是 Redis 的阻塞點。
Redis 叢集可以進行節點的動態擴容縮容,這一過程目前還處於半自動狀態,需要人工介入。
在擴縮容的時候,需要進行資料遷移。而 Redis 為了保證遷移的一致性,遷移所有操作都是同步操作。
執行遷移時,兩端的 Redis 均會進入時長不等的阻塞狀態,對於小Key,該時間可以忽略不計,但如果一旦 Key 的記憶體使用過大,嚴重的時候會接觸發叢集內的故障轉移,造成不必要的切換。
到此這篇關於淺談Redis阻塞的9種情況的文章就介紹到這了,更多相關Redis 阻塞內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45