【Redis】發生操作系統swap的影響、原因及解決思路


 
操作系統觸發內存Swap
  1. 內存 swap 是操作系統里將內存數據在內存和磁盤間來回換入和換出的機制,涉及到磁盤的讀寫,所以,一旦觸發 swap,無論是被換入數據的進程,還是被換出數據的進程,其性能都會受到磁盤IO慢的影響。
  2. Redis觸發swap后會影響Redis的主IO線程,大大增加Redis的響應時間
 
Redis觸發Swap原因
  1. Redis實例使用了大量內存,導致機器物理內存不足
  2. Redis實例所在機器其它程序使用了大量內存,導致Redis實例可用內存不足
 
查看Redis實例發生swap的情況
// 查看Redis實例ID 
redis-cli -a auth info | grep process_id  

cd /proc/process_id   

// 查看Swap情況 
// Redis會使用多個內存塊,Size表示內存塊大小,Swap表示交換到磁盤的大小,如果該值較大,則說明物理內存可能不足 

$cat smaps | egrep '^(Swap|Size)'   

Size: 600kB 
Swap: 0 kB 

Size: 50kB 
Swap: 50kB 

Size: 50kB 
Swap: 0 kB 

Size: 40000 kB 
Swap: 40000 kB 

Size: 20000kB 
Swap: 0 kB
 
解決思路
  1. Redis實例使用大量內存:增加實例所在機器物理內存 或 使用Redis集群,將內存壓力分散到多個節點
  2. 其它程序占用內存: Redis實例獨立機器部署


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM