Redis 阻塞之外在因素

2021-10-06 10:53:14 字數 1188 閱讀 6367

排查redis自身原因引起的阻塞原因之後, 如果還沒有定位問題, 需要排查是否由外部原因引起。 圍繞以下三個方面進行排查:

·cpu競爭

·記憶體交換

·網路問題

cpu競爭問題如下:

·程序競爭: redis是典型的cpu密集型應用, 不建議和其他多核cpu密集型服務部署在一起。 當其他程序過度消耗cpu時, 將嚴重影響redis吞吐量。 可以通過top、 sar等命令定位到cpu消耗的時間點和具體程序, 這個問題比較容易發現, 需要調整服務之間部署結構。

·繫結cpu: 部署redis時為了充分利用多核cpu, 通常一台機器部署多個例項。 常見的一種優化是把redis程序繫結到cpu上, 用於降低cpu頻繁上下文切換的開銷。 這個優化技巧正常情況下沒有問題, 但是存在例外情況,如圖所示。

當redis父程序建立子程序進行rdb/aof重寫時, 如果做了cpu繫結,會與父程序共享使用乙個cpu。子程序重寫時對單核cpu使用率通常在90%以上, 父程序與子程序將產生激烈cpu競爭, 極大影響redis穩定性。 因此對於開啟了持久化或參與複製的主節點不建議繫結cpu。

記憶體交換(swap) 對於redis來說是非常致命的, redis保證高效能的乙個重要前提是所有的資料在記憶體中。 如果作業系統把redis使用的部分記憶體換出到硬碟, 由於記憶體與硬碟讀寫速度差幾個數量級, 會導致發生交換後的redis效能急劇下降。 識別redis記憶體交換的檢查方法如下:

1) 查詢redis程序號:

# redis-cli -p 6383 info server | grep process_id

process_id:4476

2) 根據程序號查詢記憶體交換資訊:

# cat /proc/4476/smaps | grep swap

swap: 0 kb

swap: 0 kb

swap: 4 kb

swap: 0 kb

swap: 0 kb

.....

如果交換量都是0kb或者個別的是4kb, 則是正常現象, 說明redis程序記憶體沒有被交換。 預防記憶體交換的方法有:

SEO外在因素研究之SEO資源整合優化

對於seo我們每天都會有站長分享自己的技術,其實技術這一塊,認真的花個幾個月研究下就都能摸透,很多人可能就會覺得seo技術很簡單,其實不是的。說簡單其實seo真的能夠很簡單,因為seo就是每天要做的四件事 1 內容更新 2 內鏈建設 3 外鏈建設 4 資料分析。但是深究下來,seo還是有很多值得我們...

SEO外在因素研究之SEO經驗整理技巧

在前面的文章 seo程式設計客棧外在因素研究之seo資源整合優化 中我為大家介紹了乙個觀點,那就是乙個 的seo工作有兩個方面的因素會影響到我們的成效,而我們大部分時間在研究的是內在的因素 技術方面,其實還有另外乙個很重要的因素,那就是外部因素的影響,前面我給大家分享的是其中關於seo資源整合優化的...

redis執行緒阻塞原因排插 Redis 阻塞原因

1.內因 a.api或資料結構使用不合理 如 對乙個包含上萬元素的hash結構執行hgetall操作,資料量大且命令複雜度o n 必然阻塞 b.慢查詢 前面有介紹 c.大物件 執行.redis cli h p bigkeys命令可找出當前最大物件出來,接著便可對大物件進行調整或縮減或分成多個小物件 ...