Redis 開啟monitor監視器的性能消耗


之前介紹了redis的monitor,今天有朋友問monitor是否能長時間開啟,我知道monitor會有較大性能開銷,但不清楚具體消耗的程度,就測試了一下

測試過程

 

以一個monitor為例,使用redis-benchmark分別測試monitor開啟前后的性能

redis-benchmark -c 10 -n 100000 -q

開啟前結果

PING_INLINE: 92506.94 requests per second
PING_BULK: 97943.19 requests per second
SET: 94786.73 requests per second
GET: 99403.58 requests per second
INCR: 89766.61 requests per second
......

開啟后結果

PING_INLINE: 76569.68 requests per second
PING_BULK: 67294.75 requests per second
SET: 44404.97 requests per second
GET: 60132.29 requests per second
INCR: 49382.71 requests per second
......

結果對比

開啟后的性能明顯低了很多,例如:

SET -53%

GET -39%

INCR -44%

實際案例

 

美團就遇到過monitor的性能影響問題

問題現象

redis-cluster中的某個分片內存飆升,明顯高於其他分片,持續增長,並且主從的內存使用量並不一致

分析過程

(1)查看info信息,發現client_longest_output_list值異常

client_longest_output_list 是當前客戶端連接的最大輸出列表

此值過大說明輸出緩沖區占用內存較大,也就是有大量的數據從Redis服務器向某些客戶端輸出

(2)使用client list命令查看omem值大於0的

client List 命令用於返回所有連接到服務器的客戶端信息和統計數據

omem 表示輸出緩沖區和輸出列表占用的內存總量

查看結果列表,關注 cmd(最近一次執行的命令) 屬性值,發現了異常:monitor,說明某client開啟了監視器,造成大幅性能影響


所以通過自測和他人的案例,說明monitor只能用於短期調試,不能長期開啟

 


免責聲明!

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



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