簡體   English   中英

Redis - 監控內存使用情況

[英]Redis - monitoring memory usage

我目前正在測試Redis數據庫(在本地)插入密鑰。 我有超過500萬的密鑰,我只有4GB的RAM,所以有一刻我達到RAM的容量和交換填充(我的電腦下降)...

我的問題是:如何在具有Redis數據庫的機器上進行監視內存使用,並以這種方式警告不再在Redis數據庫中插入一些鍵?

謝謝。

內存是Redis性能的關鍵資源。 使用的內存定義了Redis使用其分配器(標准libc,jemalloc或替代分配器,如tcmalloc)分配的總字節數。

您可以通過運行“info memory”來收集Redis實例的所有內存利用率指標數據。

127.0.0.1:6379> info memory
Memory
used_memory:1007280
used_memory_human:983.67K
used_memory_rss:2002944
used_memory_rss_human:1.91M
used_memory_peak:1008128
used_memory_peak_human:984.50K

有時,當Redis配置為沒有最大內存限制時,內存使用量最終將達到系統內存,服務器將開始拋出“Out of Memory”錯誤。 在其他時候,Redis配置了最大內存限制但沒有禁止策略。 這將導致服務器不會驅逐任何密鑰,從而在釋放內存之前阻止任何寫入。 解決此類問題的方法是使用最大內存和一些驅逐策略配置Redis。 在這種情況下,服務器開始使用逐出策略驅逐密鑰,因為內存使用量達到最大值。

內存RSS(駐留集大小)是操作系統分配給Redis的字節數。 如果'memory_rss'與'memory_used'的比率大於~1.5,則表示存儲器碎片。 可以通過重新啟動服務器來恢復碎片化的內存。

有一個很好的Unix實用程序名為vmstat。 它就像top但命令行,因此您可以獲得內存使用情況並在系統停止之前做好准備。 您還可以使用ps v PID獲取有關特定過程的信息。 可以通過以下方式檢索Redis的PID: pidof redis-server

關於內存使用情況,我建議你查看redis.io 常見問題和本文關於將redis用作LRU緩存的文章

您可以通過maxmemory配置設置限制內存使用量,在這種情況下,一旦達到內存限制,所有寫入請求都將失敗並顯示錯誤,或者您可以將maxmemory-policy設置為allkeys-lru,例如,開始覆蓋最近最近在服務器上使用的數據,包含您當前需要的東西等。對於大多數用例,您有足夠的靈活性通過正確的配置來處理這些問題。

我的建議是保持簡單並通過配置redis服務器來管理這個問題,而不是通過操作系統級監控等引入額外的復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM