obukhov/redis-inventory: 分析redis記憶體使用情況的CLI工具
“ Redis Inventory ”從Redis例項(或叢集)收集記憶體使用資訊,檢測關鍵模式,並以分層方式顯示記憶體使用情況。該名稱的靈感來自“磁碟清單 X”工具對磁碟使用情況進行類似的分析。
有人可能會爭辯說,與硬碟不同,快取伺服器不是持久儲存,那麼為什麼還要分析它的使用情況呢?是的,理論上,快取是完全短暫的,任何應用程式都應該能夠在“冷”狀態下啟動和使用它。
但實際上,在負載下,並不總是可以在沒有效能下降的情況下重新整理快取。
此外,如果應用程式使用 Redis 的方式存在問題,重新整理將只是暫時的緩解措施,因為一段時間後相同的問題會再次累積。
有時,您只是在 Redis 指標中看到一般的鍵數或記憶體消耗增加,但問題出在哪裡並不明顯,因此在沒有事先調查的情況下很難在程式碼中修復它。
在快取中看到的兩個最流行的問題是:快取鍵洩漏和忘記設定 TTL :
- 您不小心向鍵Key新增了過於動態的內容時,就會發生鍵洩漏,例如時間戳或其雜湊。
- 使用 TTL,您可能依賴應用程式來刪除它們,但在某些情況下它不會發生並且鍵將永遠保留在快取中。
在快速變化的大型應用程式中,這些問題很難追蹤。分析所有可能導致它的程式碼更改而不提示有問題的鍵可能需要數天時間。
工作原理
為了分析記憶體使用情況,該工具會掃描金鑰空間並使用MEMORY USAGE命令測量每個單獨的key大小。它構建了一個巢狀節點樹,類似於磁碟上的資料夾結構。但是我們如何將純字串鍵解釋為層次結構?在快取鍵中使用各種字首是很常見的,我們只需要反轉它。最簡單的方法是使用一組“:”字元並將字串分解為字串段的元組。然後將這些段中的每一個視為一個“資料夾”,構建一個節點樹.
這種結構在這種特殊情況下非常方便,原因有幾個:它節省記憶體,很容易在那裡新增key,並且在構建它的階段就可以聚合每個級別的使用資料。我們可以將聚合指標的容器附加到每個節點。當向樹新增新鍵時,我們將下降樹並在路徑中的每個級別新增值(記憶體使用或其他)。
命令
$ redis-inventory inventory <host>:<port> --output=table --output-params="padSpaces=2&depth=2&human=1" |
輸出:
12:39PM INF Start scanning +---------------------+----------+-----------+ | KEY | BYTESIZE | KEYSCOUNT | +---------------------+----------+-----------+ | dev: | 2.9M | 4,555 | | article: | 413.7K | 616 | | blogpost: | 408.5K | 630 | | collections: | 426.7K | 627 | | events: | 391.2K | 614 | | friends:foobar: | 501.1K | 745 | | news: | 388.8K | 593 | | user: | 481K | 730 | | prod: | 2.9M | 4,531 | | article: | 397.1K | 614 | | blogpost: | 409.4K | 627 | | collections: | 374.7K | 560 | | events: | 384.2K | 588 | | friends:foobar: | 503K | 755 | | news: | 407.9K | 618 | | user: | 492.3K | 769 | +---------------------+----------+-----------+ 12:39PM INF Finish scanning |
點選標題見專案
相關文章
- Redis 記憶體突增時,如何定量分析其記憶體使用情況Redis記憶體
- Linux系統下分析記憶體使用情況的管理工具Linux記憶體
- Linux效能優化:記憶體使用情況分析Linux優化記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- 使用 vmstat 命令確定記憶體使用情況記憶體
- 使用 top 命令瞭解 Fedora 的記憶體使用情況記憶體
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- 檢查 Linux 中記憶體使用情況的 8 條命令Linux記憶體
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- 總結Linux下檢視記憶體使用情況的多種方法Linux記憶體
- 記憶體效能分析工具記憶體
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- linux 檢視某個程序和服務記憶體佔用情況命令Linux記憶體
- 在Linux中,如何檢查系統的CPU和記憶體使用情況?Linux記憶體
- Dutree – Linux上的命令列磁碟使用情況分析工具Linux命令列
- Redis記憶體碎片深入分析Redis記憶體
- 監控 Python 記憶體使用情況和程式碼執行時間!Python記憶體
- 檢視 Linux 系統中程序和使用者的記憶體使用情況Linux記憶體
- 一個golang編寫的redis記憶體分析工具rma4goGolangRedis記憶體
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- redis的記憶體滿了之後,redis如何回收記憶體嗎Redis記憶體
- Oracle 歸檔使用情況分析Oracle
- JVM效能調優,記憶體分析工具JVM記憶體
- 05記憶體情況記憶體
- Redis的記憶體淘汰策略Redis記憶體
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- 如何使用 Bash 指令碼從 SAR 報告中獲取 CPU 和記憶體使用情況指令碼記憶體
- 檢視Redis叢集所有節點記憶體工具Redis記憶體
- jvm-44-jvm 記憶體效能分析工具 Eclipse Memory Analyzer Tool (MAT) / 記憶體分析器 (MAT)JVM記憶體Eclipse
- 監控JVM記憶體使用情況,剩餘空間小於2M時報警JVM記憶體
- Redis效能篇(四)Redis記憶體碎片Redis記憶體
- Ubuntu記憶體分析Ubuntu記憶體
- JVM記憶體分析JVM記憶體
- 精講Redis記憶體模型Redis記憶體模型