Redis的TPS太低的優化方法 原

Redis的TPS太低的優化方法

問題檢查

  1. 內存檢查,看看是否存在內存不足使用SWAP的情況
  2. 單核CPU和整體CPU的使用情況檢查,看看CPU負荷是否高居不下
  3. 檢查磁盤IO和網絡IO的情況
  4. 檢查網絡延遲是否正常,網絡一定要好
  5. 用redis的 info commandstats 命令查看命令執行分佈和事件,看看是否大量存在hgetall、smembers等時間複雜的高的命令
  6. 用redis的 info stats 命令統計TPS
  7. 用redis的 slowlog get 命令查看慢查詢的命令,進行針對性優化
  8. 檢查客戶端列表,檢查連接時間和內存消耗omem的客戶端
redis-cli -p 6379 -h xxxx –a xxxx client list | grep -v “omem=0”
  1. bigkey檢查,bigkey對性能影響比較大
redis-cli -p 6379 -h xxxx –a xxxx –-bigkeys
  1. 如使用lua腳本,看看lua腳本中是否存在大量的計數

服務器內核參數調整

  1. 設置overcommit爲1
echo 1 > /proc/sys/vm/overcommit_memory
cat /proc/sys/vm/overcommit_memory
  1. 關閉THP
cho never > /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
  1. 設置TCP backlog
echo 511 >  /proc/sys/net/core/somaxconn
cat /proc/sys/net/core/somaxcon

redis配置調整

  1. 設置maxmemory, 若開啓快照功能,maxmemory設置成物理內存的45%,若不開啓則設置爲95%
  2. 綁定本機網卡,bind x.x.x.x
  3. 設置客戶端超時時間timeout和tcp-keepalive,防止無用連接佔用資源
  4. 檢查持久化策略,rdb和aof只使用一種或都不使用(主庫關閉,從庫開啓)
    如使用rdb策略,則save的頻率不要太高,並且可以關閉rdbcompression 和 rdbchecksum
    如使用aof策略,則appendfsync不要設置爲always,可以調整一下aof文件重寫配置auto-aof-rewrite-percentage和auto-aof-rewrite-min-size
    關於持久化的優化方法可參考:深入Redis持久化
  5. 數據的編碼優化,根據內存的情況可調整數據的編碼以提升性能,參考:.Redis的內存優化

代碼中的優化

  1. 查看業務邏輯,是否可使用管道模式(Piplline),使用管道對性能你的提升非常大
  2. 能否使用lua腳本
  3. 換一個性能好的客戶端,如Lettuce,參考:Lettuce和Jedis的基準測試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章