Redis 慢查询日志
2015-08-02 08:50
585 查看
慢查询日志是 Redis 提供的一个用于观察系统性能的功能。
每条慢查询日志都以一个 slowlog.h/slowlogEntry 结构定义:
记录服务器状态的 redis.h/redisServer 结构里保存了几个和慢查询有关的属性:
每条慢查询日志都以一个 slowlog.h/slowlogEntry 结构定义:
typedef struct slowlogEntry { // 命令参数 robj **argv; // 命令参数数量 int argc; // 唯一标识符 long long id; /* Unique entry identifier. */ // 执行命令消耗的时间,以纳秒(1 / 1,000,000,000 秒)为单位 long long duration; /* Time spent by the query, in nanoseconds. */ // 命令执行时的时间 time_t time; /* Unix time at which the query was executed. */ } slowlogEntry;
记录服务器状态的 redis.h/redisServer 结构里保存了几个和慢查询有关的属性:
struct redisServer { ... // 保存慢查询日志的链表 list *slowlog; /* SLOWLOG list of commands */ // 慢查询日志的当前 id 值。在创建每条新的慢查询日志时增一,用于产生慢查询日志的 ID long long slowlog_entry_id; /* SLOWLOG current entry ID */ // 慢查询时间限制。用户指定的命令执行时间上限,执行时间大于等于这个值的命令会被慢查询日志记录。(配置项) long long slowlog_log_slower_than; /* SLOWLOG time limit (to get logged) */ // 慢查询日志的最大条目数量。当日志数量等于这个值时,添加一条新日志会造成最旧的一条日志被删除。(配置项) unsigned long slowlog_max_len; /* SLOWLOG max number of items logged */ };
示例: Redis>slowlog get :3 #日志的唯一标识ID :1378781439 #命令执行的UNIX时间戳 :10 #命令执行的时长,单位:微秒 1) SET #命令及命令参数 2) number 3) 10086