监控
语法
MONITOR
- 从以下位置开始可用:
- 1.0.0
- 时间复杂度:
- ACL 类别:
-
@admin,@slow,@dangerous,
MONITOR是一个调试命令,它流回由
Redis 服务器。
它可以帮助了解数据库发生了什么。
此命令都可以通过redis-cli和 viatelnet.
查看服务器处理的所有请求的功能按顺序很有用 在将 Redis 用作数据库和 分布式缓存系统。
$ redis-cli monitor
1339518083.107412 [0 127.0.0.1:60866] "keys" "*"
1339518087.877697 [0 127.0.0.1:60866] "dbsize"
1339518090.420270 [0 127.0.0.1:60866] "set" "x" "6"
1339518096.506257 [0 127.0.0.1:60866] "get" "x"
1339518099.363765 [0 127.0.0.1:60866] "eval" "return redis.call('set','x','7')" "0"
1339518100.363799 [0 lua] "set" "x" "7"
1339518100.544926 [0 127.0.0.1:60866] "del" "x"
用SIGINT(Ctrl-C) 停止MONITOR流运行 方式redis-cli.
$ telnet localhost 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
MONITOR
+OK
+1339518083.107412 [0 127.0.0.1:60866] "keys" "*"
+1339518087.877697 [0 127.0.0.1:60866] "dbsize"
+1339518090.420270 [0 127.0.0.1:60866] "set" "x" "6"
+1339518096.506257 [0 127.0.0.1:60866] "get" "x"
+1339518099.363765 [0 127.0.0.1:60866] "del" "x"
+1339518100.544926 [0 127.0.0.1:60866] "get" "x"
QUIT
+OK
Connection closed by foreign host.
手动发出QUIT或RESET停止MONITOR流运行
通过telnet.
MONITOR 未记录的命令
出于安全考虑,不会记录任何管理命令
由MONITOR的输出和敏感数据在命令中被编辑AUTH.
此外,命令QUIT也不会记录。
运行 MONITOR 的成本
因为MONITORstreams 返回所有命令,它的使用是有代价的。
以下(完全不科学的)基准数字说明了成本
的运行MONITOR可以。
没有的基准测试结果 MONITOR运行:
$ src/redis-benchmark -c 10 -n 100000 -q
PING_INLINE: 101936.80 requests per second
PING_BULK: 102880.66 requests per second
SET: 95419.85 requests per second
GET: 104275.29 requests per second
INCR: 93283.58 requests per second
基准测试结果 MONITOR正在运行 (redis-cli monitor > /dev/null):
$ src/redis-benchmark -c 10 -n 100000 -q
PING_INLINE: 58479.53 requests per second
PING_BULK: 59136.61 requests per second
SET: 41823.50 requests per second
GET: 45330.91 requests per second
INCR: 41771.09 requests per second
在这种特定情况下,运行单个MONITOR客户端可以减少
吞吐量提高 50% 以上。
跑得更多MONITOR客户端将进一步降低吞吐量。
行为更改历史记录
>= 6.0.0:AUTH从命令的输出中排除。>= 6.2.0: "RESET可以调用以退出监控模式。>= 6.2.4: "AUTH,HELLO,EVAL,EVAL_RO,EVALSHA和EVALSHA_RO包含在命令的输出中。