Skip to content

redis patch,增加跟踪模块,收集更丰富的,底层函数调用耗时。A patch for redis, add a module used to collection of detail duration in function calls of one command.

swordstick/redis-durationlog-patch

Repository files navigation

redis-durationlog-patch

redis补丁,增加名为durationlog的模块。
用于收集进入slow日志的操作,底层调用过程中耗时情况。目标是填补slow + lantency 监控的盲区.
目前补丁针对redis 3.0.7 及 3.0.5版本。

安装

  • 下载官方3.0.7版本
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar -xzvf redis-3.0.7.tar.gz
$ cd redis-3.0.7
  • 打补丁并编译安装
$ cp /{path}/durationlog.h src/
$ cp /{path}/durationlog.c src/
$ patch -p1 < /{path}/redis-3.0.7.patch
$ make && make install

用法

配置文件参数

durationlog_status  = 1				//	1为打开,0为关闭,默认为1
slowlog-log-slower-than 1			//	时间阀值,复用slowlog参数,无需额外调整
slowlog-max-len 128					//	最大长度,复用slowlog参数,无需额外调整
loglevel = notice[debug,verbose]	//  durationlog输出最低loglevel要求为notice,更深埋点需要debug,verbose生效,notice为默认loglevel值

在线开关DURATIONLOG功能

config set durationlog_status "1"	
config set durationlog_status "0"	
config get durationlog_status
//loglevel被调整到warning时,durationlog同样也关闭,在debug和verbose下loglevel可以丰富返回信息,目前在增加debug和verbose级别的埋点,暂时各级别信息量一致
config set loglevel "notice"

命令支持

  • 与slow用法完全一致
durationlog get 
durationlog get $len
durationlog reset
durationlog len

测试

  • 为便于测试,设置为大于1微妙记录,注意调整的是slowlog的阀值
  • durationlog返回值包含了slowlog全部内容
> config set slowlog-log-slower-than "1"
OK
> set key1 "value3"
OK
> get key1
"value3"
> durationlog get
1) 1) (integer) 12					//	该id编号与slowlog的id编号对应,含义同slowlog
   2) (integer) 1486139810			//	执行时间点,含义同slowlog
   3) (integer) 16					//	总消耗,含义同slowlog
   4) 1) "get"						//	command,含义同slowlog
      2) "key1"						//	command,含义同slowlog
   5) 1) "checktype_addReplay"		//	在 5)中记录调用链耗时,只显示已埋点的调用,执行顺序从高到底
      2) (integer) 3
      3) "lookupKeyReadOrReply"		//	该底层调用名称
      4) (integer) 5				//	该底层调用耗时
      5) "lookupKey"
      6) (integer) 2
      7) "expireIfNeeded"
      8) (integer) 1
...

性能

  • durationlog原理与slowlog一致,仅在超过阀值才记录
  • durationlog使用两层list作为存储结构,较slowlog复杂,但影响很小
  • 可选择平时关闭durationlog功能,需要时在线开启

已支持跟踪命令及扩展埋点方法

参见:已支持跟踪命令及扩展埋点方法

版本

  • v1.0

作者

swordstick
www.dbathread.com

About

redis patch,增加跟踪模块,收集更丰富的,底层函数调用耗时。A patch for redis, add a module used to collection of detail duration in function calls of one command.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages