由于Redis的复线程架构,所以须要每个命令能被极速执行完,否则会存在阻塞Redis的或许,了解Redis复线程命令处置机制是开发和运维Redis的外围之一。
许少数据库会提供慢查问日志协助开发和运维人员定位系统存在的慢操作。所谓慢查问日志就是系统在命令执行前后计算每条命令的执行期间,当然在数据库中最经常出现的就是select这些sql语句了,当超越预设阀值,就将这条命令的关系消息(例如:出现期间,耗时,命令的具体消息)记载上去,Redis也提供了相似的性能。
那么如何经常使用Redis所提供的慢查问性能呢?Redis关键提供了slowlog-log-slower-than和slowlog-max-len两特性能参数来提供这项性能。两项参数区分用来设置慢查问的阈值以及存加快查问的记载。首先对redis的这两特性能启动一个说明:
从字面意思就可以看出,可以经过slowlog-log-slower-than参数设置什么状况下是慢语句,只要redis命令执行期间大于slowlog-log-slower-than的才会定义成慢查问,才会被slowlog启动记载。它的单位是微秒(1秒=1000毫秒=1000000微秒),在初始状况下自动值是10000,也就是10ms,假设执行了一条比拟慢的命令,假设它的执行期间超越了10ms ,那么它将被记载在慢查问日志中。(假设slowlog-log-slower-than=0会记载一切的命令,slowlog-log-slowerthan<0关于任何命令都不会启动记载)
从字面意思看,slowlog-max-len说明了慢查问日志最多可以存储多少条记载,实践上Redis经常使用了一个列表来存储慢查问日志,slowlog-max-len就是列表的最大长度,它自身是一个先进先出队列,当slowlog超越设定的最大值后,会将最早的slowlog删除。简而言之当一个新的命令满足慢查问条件时会被拔出到这个列表中,当慢查问日志列表已处于其最大长度时,最早拔出的一个命令将从列表中移出,例如slowlog-max-len设置为50 ,当有第51条慢查问拔出的话,那么队头的第一条数据就出列,第51条慢查问就会出列。
接上去具体引见一下如何性能这两个参数,有两种方式启动性能,以下截图所有经常使用了redis -5.0.5版本 :
经过修正redis .conf文件之后重启redis服务 , 性能即可失效 。
性能查问期间超越1毫秒的命令启动记载
保留500条慢查记载
经过config get命令确认性能已失效
要留意经过config命令性能的为灵活失效 , 一旦服务重启则会从新复原为自动设置 , 所以倡导在排查疑问时经过config这种方式启动性能 ,然而服务稳固后经过修正性能文件方式启动最终确认 (可以经过config rewrite命令耐久化到本地文件 , 但要关键启动redis时要指定redis .conf文件 该命令才可以失效)。
关系的参数曾经设置成功了 , 那么如何检查记载的消息呢 ?要想检查所记载的日志 , 关键经常使用 SLOWLOG GET 或许 SLOWLOG GETnumber 命令,前者将会输入一切的 slow log ,最大长度取决于 slowlog-max-len 选项的值,而 SLOWLOG GET number则只打印指定数量的日志。
检查日志数量: 经常使用SHOW LEN命令检查日志数量。
由于我是新装置的redis , 所以如今还没有耗时长日志 , 所以条数是 0,假设日志条数过多,还可以经常使用slowlog reset命令启动日志清空。
为了繁难演示 ,我将一切的执行命令都记载了上去,以第一条为例,
1、(integer) 1 # 惟一性(unique)的日志标识符
2、(integer) 1562075522 # 被记载命令的执行期间点,以 UNIX 期间戳格局示意
3、(integer) 93 # 查问执行期间,以微秒为单位
4、1."CONFIG" # 执行的命令,以数组的方式陈列
6、" " # 这里完整的命令是 CONFIG GET
慢查问性能可以有效地协助咱们找到Redis或许存在的瓶颈,但在实践经常使用环节中要留意以下几点:
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8073.html