1. 程式人生 > 實用技巧 >【Redis】發生作業系統swap的影響、原因及解決思路

【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例項獨立機器部署