Redis 響應延遲問題排查

jopen 9年前發布 | 15K 次閱讀 Redis NoSQL數據庫

參考原文:http://redis.io/topics/latency

最近數據量越來越多,并發寫操作很多的情況下,Redis出現響應慢的情況;

可以使用 Redis命令來測試一下redis的響應速度:

redis-cli --latency -h 'xxx' -p 'xxxx'

這條命令會向Redis插入示例數據來檢查平均延時。 Ctrl+C可以隨時結束測試;

下面我們列一下會出現延時的可能:

  • 硬件,系統:硬件問題是所有問題最底層的問題了,如果硬件慢,例如CPU主頻低,內存小,磁盤IO慢,這些會讓所有運行在上面的系統響應慢;另外,使用虛擬機會讓系統運行的性能太為下降;當然,有錢的話,這問題很容易解決;系統方面,Linux本身的系統資源調度也會產生一定的延時。這些一般不會很大,可以忽略不計;

  • 網絡:如果客戶端和redis在同一臺服務器上,使用socket建立連接會比監聽 TCP/IP 端口快很多;

  • Redis命令:一些時間復雜度比較高的命令,如 lrem,sort,sunion等命令會花比較長時間;另外,大量的重復連接也會造成延時,重用連接是一種很好的品質;如果有大量寫操作,可以使用 pipeline 管道的方式(類似mysql事務),一次性提交,這樣數據量也少了,連接次數也少了,不用每次都返回數據,速度自然會快很多;

  • 持久化:Redis持久化需要fork出一個進程來進行持久化操作,這本身就會引發延時,如果數據變化大,RDB配置時間短,那這個代價還是挺大的;再加上,硬盤這東西真有點不靠譜,如果還是虛擬機上的虛擬硬盤,如果還是NFS共享目錄,那這延時會讓你崩潰。所以,如果系統不需要持久化,關了吧。



Redis提供了SlowLog可以供我們分析執行速度慢的命令,可以分析一下;操作系統方面,可以使用 iostat 查看一下硬盤速度,使用 vmstat 查看一下內存分頁情況;

整體優化好,系統響應才會更快;

來自:http://my.oschina.net/ifeixiang/blog/365649


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!