REDIS的幾個測試結果

來源:互聯網
上載者:User

標籤:performance   redis   

情境一:對單一鍵大並發量增加(INC)操作,類比對熱點產品的庫存修改

測試點:
   原子性,保證最後的索引值等於所有索引值增加操作的總和效能,
   保證在大並發量下寫操作的效能沒有大的降低


線程數 100次INC操作的平均時間 服務端資料
10 140 instantaneous_ops_per_sec(每秒處理指示數):342
instantaneous_input_kbps(每秒讀位元組數):10.70
instantaneous_output_kbps(每秒寫位元組數):1.90
used_cpu_sys(系統CPU使用量):0.05
used_cpu_user(使用者CPU使用量):0.03
50 560 instantaneous_ops_per_sec(每秒處理指示數):2780
instantaneous_input_kbps(每秒讀位元組數):86.89
instantaneous_output_kbps(每秒寫位元組數):18.20
used_cpu_sys(系統CPU使用量):0.48
used_cpu_user(使用者CPU使用量):0.37
100 1050 instantaneous_ops_per_sec(每秒處理指示數):5766
instantaneous_input_kbps(每秒讀位元組數):180.22
instantaneous_output_kbps(每秒寫位元組數):38.60
used_cpu_sys(系統CPU使用量):1.31
used_cpu_user(使用者CPU使用量):0.52
120 1400 instantaneous_ops_per_sec(每秒處理指示數):6857
instantaneous_input_kbps(每秒讀位元組數):214.29
instantaneous_output_kbps(每秒寫位元組數):46.87
used_cpu_sys(系統CPU使用量):2.51
used_cpu_user(使用者CPU使用量):0.81
150 1570 instantaneous_ops_per_sec(每秒處理指示數):8350
instantaneous_input_kbps(每秒讀位元組數):260.95
instantaneous_output_kbps(每秒寫位元組數):58.74
used_cpu_sys(系統CPU使用量):4.04
used_cpu_user(使用者CPU使用量):1.13

結論:
   用戶端100次操作的時間隨著線程數增加而增加,但是服務端的處理量並沒有達到極限,CPU的使用量也不高,可見REDIS處理高並發請求沒有問題.
Jvisualvm 分析結果:用戶端處理時間長主要是由於線程切換的代價和網路開銷

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6F/22/wKiom1WSWHbAE0EGAAMuCeJojHo135.jpg" title="visualvmres.png" alt="wKiom1WSWHbAE0EGAAMuCeJojHo135.jpg" />

情境二:資料持久化測試

資料佔用記憶體大小:
         400000條資料,鍵長度20,資料長度1.   總共佔用 28.90M
         2000000條資料,鍵長度20,資料長度1. 總共佔用138.55M


持久化模式 資料量 用戶端時間 服務端資料

RDB模式,資料快照定期寫入磁碟

 

規則:每900秒如果資料改變超過1次則寫入磁碟

 

每300秒如果資料改變超過10次則寫入磁碟

 

每60秒如果資料改變超過10000次則寫入磁碟

400000次寫 148397 ms instantaneous_ops_per_sec(每秒處理指示數):2538
instantaneous_input_kbps(每秒讀位元組數):116.52
instantaneous_output_kbps(每秒寫位元組數):12.40
latest_fork_usec:614
2000000次寫 750721ms instantaneous_ops_per_sec(每秒處理指示數):2705
instantaneous_input_kbps(每秒讀位元組數):126.80
instantaneous_output_kbps(每秒寫位元組數):13.21
latest_fork_usec:889
資料不持久化
400000次寫 145062 ms instantaneous_ops_per_sec(每秒處理指示數):2840
instantaneous_input_kbps(每秒讀位元組數):130.38
instantaneous_output_kbps(每秒寫位元組數):13.87
2000000次寫 746384ms instantaneous_ops_per_sec(每秒處理指示數):2723
instantaneous_input_kbps(每秒讀位元組數):127.68
instantaneous_output_kbps(每秒寫位元組數):13.30
資料複製到一個節點
400000次寫 210540ms

instantaneous_ops_per_sec(每秒處理指示數):2222

instantaneous_input_kbps(每秒讀位元組數):102.00

instantaneous_output_kbps(每秒寫位元組數):112.83
2000000次寫 9249390ms

instantaneous_ops_per_sec(每秒處理指示數):2126

instantaneous_input_kbps(每秒讀位元組數):99.69

instantaneous_output_kbps(每秒寫位元組數):110.05

AOF 模式

Fysnc per second

 

操作以日誌方式寫入磁碟,每秒將日誌從磁碟緩衝區刷入硬碟


400000次寫 158809ms

instantaneous_ops_per_sec(每秒處理指示數):2169

instantaneous_input_kbps(每秒讀位元組數):99.59

instantaneous_output_kbps(每秒寫位元組數):10.59
2000000次寫

765037ms

instantaneous_ops_per_sec(每秒處理指示數):2656

instantaneous_input_kbps(每秒讀位元組數):124.54

instantaneous_output_kbps(每秒寫位元組數):12.97

AOF 模式:

Fsync always

 

操作以日誌方式寫入磁碟,每次操作將日誌從磁碟緩衝刷入硬碟
400000次寫 583053ms

instantaneous_ops_per_sec(每秒處理指示數):642

instantaneous_input_kbps(每秒讀位元組數):29.49

instantaneous_output_kbps(每秒寫位元組數):3.14
2000000次寫 3154548ms

instantaneous_ops_per_sec(每秒處理指示數):613

instantaneous_input_kbps(每秒讀位元組數):28.77

instantaneous_output_kbps(每秒寫位元組數):2.99

AOF 模式:

Fsync never

 

操作以日誌方式寫入磁碟,由作業系統決定何時將日誌從磁碟緩衝刷入硬碟
400000次寫

152612ms

instantaneous_ops_per_sec(每秒處理指示數):2725

instantaneous_input_kbps(每秒讀位元組數):125.07

instantaneous_output_kbps(每秒寫位元組數):13.30
2000000次寫 769203ms

instantaneous_ops_per_sec(每秒處理指示數):2710

instantaneous_input_kbps(每秒讀位元組數):127.03

instantaneous_output_kbps(每秒寫位元組數):13.23

RDB模式,資料快照定期寫入磁碟

 

規則:每900秒如果資料改變超過1次則寫入磁碟

 

每300秒如果資料改變超過10次則寫入磁碟

 

每60秒如果資料改變超過10000次則寫入磁碟

 

使用PIPELINE 大量操作,每10000條COMMIT 一次
400000次寫 1429ms

instantaneous_ops_per_sec(每秒處理指示數):131611

instantaneous_input_kbps(每秒讀位元組數):6040.77

instantaneous_output_kbps(每秒寫位元組數):641.57
2000000次寫 6740ms

instantaneous_ops_per_sec(每秒處理指示數):161782

instantaneous_input_kbps(每秒讀位元組數):7583.55

instantaneous_output_kbps(每秒寫位元組數):791.00

結論:

  • RDB模式和不持久化效能差別並非很大,主要是RDB通過FORK的方式來複製資料,對主進程的讀寫沒有影響.但是單次FORK的開銷較大,而且FORK時會消耗兩倍的記憶體

  • AOF模式每秒FSYNC和作業系統FSYNC的差別並不大,但是總是FSYNC的效能急劇下降,每秒FSYNC是一個比較合適的選擇,最多丟失1秒鐘的資料,效能也不錯

  • 資料量大對寫操作的效能並沒有太多影響

  • 實測中日誌主從複製對於效能有不小的影響,但由於是單機類比叢集測試,硬體和網路都是共用的,資料可能不準,建議在實際環境中再測試

  • 4百萬資料讀效能仍然在5到7毫秒/條

  • 資料恢複: 4百萬資料,RDB模式初始化需要大約4.12秒時間 (可從redis.log中查到), AOF模式初始化需要大約6.216秒時間

  • PIPELINE批量處理模式對於寫效能的提升是巨大的,但是使用情境比較有限,一般可以用於初始REDIS資料


REDIS的幾個測試結果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.