<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Redis實(shí)用監(jiān)控工具一覽

          共 17089字,需瀏覽 35分鐘

           ·

          2024-04-12 04:34

          v博客前言

          Redis已經(jīng)成為web應(yīng)用開(kāi)發(fā)不可或缺的一個(gè)組成部分,在項(xiàng)目中的應(yīng)用越來(lái)越廣泛,這篇文章就來(lái)講講那些關(guān)于Redis監(jiān)控的那點(diǎn)事。

          回到頂部

          vredis-benchmark

          1.1 簡(jiǎn)介

          第一個(gè)就介紹一下,Redis自帶的性能檢測(cè)工具redis-benchmark, 該工具可以模擬 N 個(gè)客戶端同時(shí)發(fā)出 Y 個(gè)請(qǐng)求??梢允褂?redis-benchmark -h 來(lái)查看基準(zhǔn)參數(shù)。

          1.2 命令格式:

          redis-benchmark [-h ] [-p ] [-c ] [-n <requests]> [-k ]

          1.3 參數(shù)介紹:

          序號(hào) 選項(xiàng) 描述 默認(rèn)值
          1 -h 指定服務(wù)器主機(jī)名 127.0.0.1
          2 -p 指定服務(wù)器端口 6379
          3 -s 指定服務(wù)器 socket
          4 -c 指定并發(fā)連接數(shù) 50
          5 -n 指定請(qǐng)求數(shù) 10000
          6 -d 以字節(jié)的形式指定 SET/GET 值的數(shù)據(jù)大小 2
          7 -k 1=keep alive 0=reconnect 1
          8 -r SET/GET/INCR 使用隨機(jī) key, SADD 使用隨機(jī)值
          9 -P 通過(guò)管道傳輸 <numreq> 請(qǐng)求 1
          10 -q 強(qiáng)制退出 redis。僅顯示 query/sec 值
          11 --csv 以 CSV 格式輸出
          12 -l 生成循環(huán),永久執(zhí)行測(cè)試
          13 -t 僅運(yùn)行以逗號(hào)分隔的測(cè)試命令列表。
          14 -I Idle 模式。僅打開(kāi) N 個(gè) idle 連接并等待。

          1.4 實(shí)例:

          1.4.1 同時(shí)執(zhí)行1000個(gè)請(qǐng)求來(lái)檢測(cè)性能:

          redis-benchmark -n 1000 -q

          1.4.2 50個(gè)并發(fā)請(qǐng)求,10000個(gè)請(qǐng)求,檢測(cè)Redis性能:

          redis-benchmark -h localhost -p 6379 -c 50 -n 10000


          [root@localhost toutou]# redis-benchmark -h localhost -p 6379 -c 50 -n 10000====== PING_INLINE ======  10000 requests completed in 0.11 seconds  50 parallel clients  3 bytes payload  keep alive: 1
          96.25% <= 1 milliseconds98.38% <= 2 milliseconds99.01% <= 3 milliseconds100.00% <= 4 milliseconds88495.58 requests per second
          ====== PING_BULK ====== 10000 requests completed in 0.10 seconds 50 parallel clients 3 bytes payload keep alive: 1
          97.74% <= 1 milliseconds100.00% <= 2 milliseconds95238.10 requests per second
          ====== SET ====== 10000 requests completed in 0.11 seconds 50 parallel clients 3 bytes payload keep alive: 1
          98.44% <= 1 milliseconds100.00% <= 1 milliseconds93457.95 requests per second
          ====== GET ====== 10000 requests completed in 0.11 seconds 50 parallel clients 3 bytes payload keep alive: 1
          98.33% <= 1 milliseconds99.13% <= 2 milliseconds100.00% <= 2 milliseconds93457.95 requests per second
          ====== INCR ====== 10000 requests completed in 0.10 seconds 50 parallel clients 3 bytes payload keep alive: 1
          98.28% <= 1 milliseconds100.00% <= 1 milliseconds95238.10 requests per second
          ====== LPUSH ====== 10000 requests completed in 0.10 seconds 50 parallel clients 3 bytes payload keep alive: 1
          98.70% <= 1 milliseconds100.00% <= 1 milliseconds97087.38 requests per second
          ====== RPUSH ====== 10000 requests completed in 0.10 seconds 50 parallel clients 3 bytes payload keep alive: 1
          98.66% <= 1 milliseconds100.00% <= 1 milliseconds95238.10 requests per second
          ====== LPOP ====== 10000 requests completed in 0.15 seconds 50 parallel clients 3 bytes payload keep alive: 1
          93.78% <= 1 milliseconds96.51% <= 2 milliseconds97.35% <= 3 milliseconds98.41% <= 4 milliseconds99.02% <= 5 milliseconds99.23% <= 6 milliseconds99.46% <= 7 milliseconds99.96% <= 8 milliseconds99.97% <= 9 milliseconds100.00% <= 9 milliseconds67567.57 requests per second
          ====== RPOP ====== 10000 requests completed in 0.31 seconds 50 parallel clients 3 bytes payload keep alive: 1
          65.78% <= 1 milliseconds84.10% <= 2 milliseconds90.96% <= 3 milliseconds94.19% <= 4 milliseconds95.72% <= 5 milliseconds97.05% <= 6 milliseconds98.33% <= 7 milliseconds98.80% <= 8 milliseconds99.40% <= 9 milliseconds99.72% <= 10 milliseconds100.00% <= 14 milliseconds31746.03 requests per second
          ====== SADD ====== 10000 requests completed in 0.19 seconds 50 parallel clients 3 bytes payload keep alive: 1
          93.00% <= 1 milliseconds96.88% <= 2 milliseconds98.33% <= 3 milliseconds98.92% <= 6 milliseconds98.94% <= 7 milliseconds98.95% <= 9 milliseconds99.04% <= 10 milliseconds99.48% <= 12 milliseconds99.61% <= 14 milliseconds99.62% <= 15 milliseconds99.99% <= 16 milliseconds100.00% <= 16 milliseconds52083.33 requests per second
          ====== HSET ====== 10000 requests completed in 0.11 seconds 50 parallel clients 3 bytes payload keep alive: 1
          95.90% <= 1 milliseconds99.95% <= 2 milliseconds100.00% <= 2 milliseconds90909.09 requests per second
          ====== SPOP ====== 10000 requests completed in 0.11 seconds 50 parallel clients 3 bytes payload keep alive: 1
          97.04% <= 1 milliseconds99.75% <= 2 milliseconds99.78% <= 3 milliseconds100.00% <= 3 milliseconds90909.09 requests per second
          ====== LPUSH (needed to benchmark LRANGE) ====== 10000 requests completed in 0.11 seconds 50 parallel clients 3 bytes payload keep alive: 1
          96.48% <= 1 milliseconds99.46% <= 2 milliseconds99.95% <= 3 milliseconds100.00% <= 3 milliseconds87719.30 requests per second
          ====== LRANGE_100 (first 100 elements) ====== 10000 requests completed in 0.33 seconds 50 parallel clients 3 bytes payload keep alive: 1
          32.63% <= 1 milliseconds93.24% <= 2 milliseconds99.83% <= 3 milliseconds100.00% <= 3 milliseconds30303.03 requests per second
          ====== LRANGE_300 (first 300 elements) ====== 10000 requests completed in 0.85 seconds 50 parallel clients 3 bytes payload keep alive: 1
          2.65% <= 1 milliseconds23.01% <= 2 milliseconds53.33% <= 3 milliseconds77.25% <= 4 milliseconds91.47% <= 5 milliseconds98.58% <= 6 milliseconds99.99% <= 7 milliseconds100.00% <= 7 milliseconds11764.71 requests per second
          ====== LRANGE_500 (first 450 elements) ====== 10000 requests completed in 1.22 seconds 50 parallel clients 3 bytes payload keep alive: 1
          1.01% <= 1 milliseconds9.09% <= 2 milliseconds28.25% <= 3 milliseconds50.31% <= 4 milliseconds68.06% <= 5 milliseconds81.18% <= 6 milliseconds90.78% <= 7 milliseconds96.96% <= 8 milliseconds99.43% <= 9 milliseconds100.00% <= 9 milliseconds8196.72 requests per second
          ====== LRANGE_600 (first 600 elements) ====== 10000 requests completed in 1.57 seconds 50 parallel clients 3 bytes payload keep alive: 1
          0.61% <= 1 milliseconds4.90% <= 2 milliseconds14.77% <= 3 milliseconds28.67% <= 4 milliseconds44.56% <= 5 milliseconds59.45% <= 6 milliseconds72.38% <= 7 milliseconds82.29% <= 8 milliseconds90.01% <= 9 milliseconds95.42% <= 10 milliseconds98.34% <= 11 milliseconds99.78% <= 12 milliseconds100.00% <= 12 milliseconds6357.28 requests per second
          ====== MSET (10 keys) ====== 10000 requests completed in 0.19 seconds 50 parallel clients 3 bytes payload keep alive: 1
          68.40% <= 1 milliseconds98.61% <= 2 milliseconds100.00% <= 3 milliseconds53763.44 requests per second

          [root@localhost toutou]#


          回到頂部

          vredis-cli

          2.1 簡(jiǎn)介

          查看redis的連接及讀寫(xiě)操作

          2.2 命令格式

          redis-cli -h xx -p yy monitor

          2.3 實(shí)例:

          2.4 redis-cli info:

          Redis 監(jiān)控最直接的方法就是使用系統(tǒng)提供的 info 命令,只需要執(zhí)行下面一條命令,就能獲得 Redis 系統(tǒng)的狀態(tài)報(bào)告。

          # Serverredis_version:5.0.2                    # Redis 的版本redis_git_sha1:00000000redis_git_dirty:0redis_build_id:bf5d1747be5380fredis_mode:standaloneos:Linux 2.6.32-220.7.1.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.4.7                       #gcc版本process_id:49324                        # 當(dāng)前 Redis 服務(wù)器進(jìn)程idrun_id:bbd7b17efcf108fdde285d8987e50392f6a38f48tcp_port:6379uptime_in_seconds:1739082               # 運(yùn)行時(shí)間(秒)uptime_in_days:20                       # 運(yùn)行時(shí)間(天)hz:10lru_clock:1734729config_file:/home/s/apps/RedisMulti_video_so/conf/zzz.conf # Clientsconnected_clients:1                     #連接的客戶端數(shù)量client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0 # Memoryused_memory:821848                       #Redis分配的內(nèi)存總量             used_memory_human:802.59Kused_memory_rss:85532672                 #Redis分配的內(nèi)存總量(包括內(nèi)存碎片)used_memory_peak:178987632used_memory_peak_human:170.70M           #Redis所用內(nèi)存的高峰值used_memory_lua:33792mem_fragmentation_ratio:104.07           #內(nèi)存碎片比率mem_allocator:tcmalloc-2.0 # Persistenceloading:0rdb_changes_since_last_save:0            #上次保存數(shù)據(jù)庫(kù)之后,執(zhí)行命令的次數(shù)rdb_bgsave_in_progress:0                 #后臺(tái)進(jìn)行中的 save 操作的數(shù)量rdb_last_save_time:1410848505            #最后一次成功保存的時(shí)間點(diǎn),以 UNIX 時(shí)間戳格式顯示rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1aof_enabled:0                            #redis是否開(kāi)啟了aofaof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:ok # Statstotal_connections_received:5705          #運(yùn)行以來(lái)連接過(guò)的客戶端的總數(shù)量total_commands_processed:204013          # 運(yùn)行以來(lái)執(zhí)行過(guò)的命令的總數(shù)量instantaneous_ops_per_sec:0rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:34401                       #運(yùn)行以來(lái)過(guò)期的 key 的數(shù)量evicted_keys:0                           #運(yùn)行以來(lái)刪除過(guò)的key的數(shù)量keyspace_hits:2129                       #命中key 的次數(shù)keyspace_misses:3148                     #沒(méi)命中key 的次數(shù)pubsub_channels:0                        #當(dāng)前使用中的頻道數(shù)量pubsub_patterns:0                        #當(dāng)前使用中的模式數(shù)量latest_fork_usec:4391 # Replicationrole:master                              #當(dāng)前實(shí)例的角色master還是slaveconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0 # CPUused_cpu_sys:1551.61used_cpu_user:1083.37used_cpu_sys_children:2.52used_cpu_user_children:16.79 # Keyspacedb0:keys=3,expires=0,avg_ttl=0             #各個(gè)數(shù)據(jù)庫(kù)的 key 的數(shù)量,以及帶有生存期的 key 的數(shù)量

          redis-cli info

          結(jié)果會(huì)返回 Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace 8個(gè)部分。從info大返回結(jié)果中提取相關(guān)信息,就可以達(dá)到有效監(jiān)控的目的。

          回到頂部

          vshowlog

          3.1 簡(jiǎn)介

          redis的slowlog是redis用于記錄記錄慢查詢執(zhí)行時(shí)間的日志系統(tǒng)。由于slowlog只保存在內(nèi)存中,因此slowlog的效率很高,完全不用擔(dān)心會(huì)影響到redis的性能。Slowlog是Redis從2.2.12版本引入的一條命令。

          3.2 命令格式

          在redis-cli中有關(guān)于slowlog的設(shè)置:

          CONFIG SET slowlog-log-slower-than 6000

          CONFIG SET slowlog-max-len 25

          3.3 實(shí)例:


          上面介紹的都是關(guān)于Redis自帶的命令化性能查詢工具。下面介紹介紹一些第三方的Redis可視化性能監(jiān)控工具。


          回到頂部

          vRedisLive

          4.1 簡(jiǎn)介

          RedisLive是由Python編寫(xiě)的開(kāi)源的圖形化監(jiān)控工具。核心服務(wù)部分只包括一個(gè)web服務(wù)和基于Redis自帶的Info命令以及monitor命令的監(jiān)控服務(wù)。支持多實(shí)例監(jiān)控,監(jiān)控信息可以使用redis存儲(chǔ)和sqlite持久化存儲(chǔ)。

          4.2 安裝

          4.2.1 安裝依賴環(huán)境

          RedisLive是由Python2.X編寫(xiě)的,所以最好使用Python2.7來(lái)運(yùn)行RedisLive,在CentOS 7中預(yù)安裝了Python2.7,但沒(méi)有安裝Python的包管理器pip。

          yum install epel-releasesudo yum install python-pippip install --upgrade pippip install tornadopip install redispip install python-dateutil

          4.2.2 安裝RedisLive

          git clone https://github.com/nkrode/RedisLive.git

          4.2.3 修改配置文件redis-live.conf

          cd RedisLive/src


          //按照以下方式修改配置文件{    "RedisServers":            [         #在此處添加需要監(jiān)控的redis實(shí)例        {              "server": "127.0.0.1",                #redis監(jiān)聽(tīng)地址,此處為本機(jī)              "port" : 6379,                        #redis端口號(hào),可以通過(guò)lsof -i | grep redis-ser查看 redis-server端口號(hào)              "password" : "some-password"          #redis認(rèn)證密碼,如果沒(méi)有可以刪除該行,注意json格式        }            ],
          "DataStoreType" : "redis", #監(jiān)控?cái)?shù)據(jù)存儲(chǔ)方案的配置,可選擇redis或sqllite #用來(lái)存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的 Redis 實(shí)例 "RedisStatsServer": { "server" : "127.0.0.1", "port" : 6379, "password" : "some-password" }, #監(jiān)控?cái)?shù)據(jù)持久化數(shù)據(jù)存儲(chǔ)配置 "SqliteStatsStore" : { "path": "db/redislive.sqlite" #redis數(shù)據(jù)文件 }}

          redis-live.conf的配置可以參考redis-live.conf.example

          4.3 啟動(dòng)

          啟動(dòng)監(jiān)控服務(wù),每60秒監(jiān)控一次

          ./redis-monitor.py --duration=60

          再次開(kāi)啟一個(gè)終端,進(jìn)入/root/RedisLive/src目錄,啟動(dòng)web服務(wù)

          ./redis-live.py

          4.4 效果圖

          回到頂部

          vredis-faina

          5.1 簡(jiǎn)介

          5.1.1 背景

          redis-faina是由Instagram開(kāi)發(fā)并開(kāi)源的一個(gè) Redis 查詢分析小工具。Instagram團(tuán)隊(duì)曾經(jīng)使用 PGFouine 來(lái)作為其PostgreSQL的查詢分析工具,他們覺(jué)得Redis也需要一個(gè)類似的工具來(lái)進(jìn)行query分析工作,于是開(kāi)發(fā)了 redis-faina。

          5.1.1 概念

          redis-faina 是通過(guò)Redis的 MONITOR命令來(lái)實(shí)現(xiàn)的,通過(guò)對(duì)在Redis上執(zhí)行的query進(jìn)行監(jiān)控,統(tǒng)計(jì)出一段時(shí)間的query特性。

          5.2 安裝

          git clone https://github.com/facebookarchive/redis-faina.git

          5.3 命令介紹


          [root@localhost toutou]# cd redis-faina/[root@localhost redis-faina]# lsheroku-redistogo-faina.sh  LICENSE  README.md  redis-faina.py[root@localhost redis-faina]# ./redis-faina.py -husage: redis-faina.py [-h] [--prefix-delimiter PREFIX_DELIMITER]                      [--redis-version REDIS_VERSION]                      [input]
          positional arguments: input File to parse; will read from stdin otherwise
          optional arguments: -h, --help show this help message and exit --prefix-delimiter PREFIX_DELIMITER String to split on for delimiting prefix and rest of key --redis-version REDIS_VERSION Version of the redis server being monitored[root@localhost redis-faina]#

          其中--prefix-delimiter主要用于統(tǒng)計(jì)前綴的key的數(shù)據(jù)。

          可以通過(guò)redis MONITOR命令以及管道進(jìn)行分析,例如:

          redis-cli -p 6379 MONITOR | head -n | ./redis-faina.py [options]

          或者

          redis-cli -p 6379 MONITOR > outfile.txt

          ./redis-faina.py ./outfile.txt


          Overall Stats========================================Lines Processed     117773Commands/Sec        11483.44
          Top Prefixes========================================friendlist 69945followedbycounter 25419followingcounter 10139recentcomments 3276queued 7
          Top Keys========================================friendlist:zzz:1:2 534followingcount:zzz 227friendlist:zxz:1:2 167friendlist:xzz:1:2 165friendlist:yzz:1:2 160friendlist:gzz:1:2 160friendlist:zdz:1:2 160friendlist:zpz:1:2 156
          Top Commands========================================SISMEMBER 59545HGET 27681HINCRBY 9413SMEMBERS 9254MULTI 3520EXEC 3520LPUSH 1620EXPIRE 1598
          Command Time (microsecs)========================================Median 78.2575% 105.090% 187.2599% 411.0
          Heaviest Commands (microsecs)========================================SISMEMBER 5331651.0HGET 2618868.0HINCRBY 961192.5SMEMBERS 856817.5MULTI 311339.5SADD 54900.75SREM 40771.25EXEC 28678.5
          Slowest Calls========================================3490.75 "SMEMBERS" "friendlist:zzz:1:2"2362.0 "SMEMBERS" "friendlist:xzz:1:3"2061.0 "SMEMBERS" "friendlist:zpz:1:2"1961.0 "SMEMBERS" "friendlist:yzz:1:2"1947.5 "SMEMBERS" "friendlist:zpz:1:2"1459.0 "SISMEMBER" "friendlist:hzz:1:2" "zzz"1416.25 "SMEMBERS" "friendlist:zhz:1:2"1389.75 "SISMEMBER" "friendlist:zzx:1:2" "zzz"

          回到頂部

          v博客總結(jié)

          關(guān)于Redis的監(jiān)控工具還有很多,這里就不一一列舉了,下面給出其它幾款優(yōu)秀的Redis監(jiān)控工具鏈接,感興趣的可以看看。

          其他監(jiān)控工具:

          • https://github.com/junegunn/redis-stat

          • https://github.com/steelThread/redmon

          • https://github.com/oliver006/redis_exporter

          鏈接:https://www.cnblogs.com/toutou/p/redis_monitor.html

                                                                       (版權(quán)歸原作者所有,侵刪)


          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人污污网站在线观看 | 亚洲欧美视频免费观看 | 高清无码在线观看免费 | 99热高清在线观看 | 欧美三级,美国一级 |