美文网首页Redis相关
Redis开发与运维总结

Redis开发与运维总结

作者: Oliver_Li | 来源:发表于2021-01-26 23:02 被阅读0次
    • 《Redis开发与运维》总结,需实测数据来源于Redis5.0.7
    1. 慢日志分析:
    • 客户端执行过程:发送 - 排队 - 执行 - 反馈,慢日志只记录执行时间
    • Redis提供两个配置:
      • 预设阈值slowlog-log-slower-than:默认10000微秒,线上建议缩小至1000微秒
      • 保存条数slowlog-max-len:默认128条,线上建议1000条或更大
      • 其他:用config get slowlog*查询配置、slowlog get查询具体数据、还可以查询条数,设置有指令和配置文件两种方式。
    • 数据项:一共6项分别代表 ID、发生时间、耗时、具体指令、客户端ip port、客户端别名。
    1. 客户端:
    • Redis通信协议:
      • RESP,RESP规定了Redis数据的发送和响应格式,可以用socket模拟编
        写客户端。
      • 开发过一个Redis远程控制台功能,和redis-cli一样直接执行指令,没找到Jedis直接执行指令的方法,所以就想着模拟RESP编写客户端,发现指令不按RESP标准格式传输,socket直接传输命令加换行如“get a\r\n”也可以执行,返回结果和RESP一致,省去了很多时间。
    • 客户端问题排查client list属性说明:
      • id、addr(远程ip端口)、fd(文件描述符)、name(客户端名字可设置)
      • qbyf、qbuf-free:输入缓冲区总容量、剩余容量,每个缓冲区不超过1G否则关闭,不受maxmemory限制,超出会产生数据丢失、淘汰、OOM等异常,可能场景处理速度跟不上堆积、大key、Redis阻塞,还可以调用info clients监控最大缓冲,超出范围报警。
      • obl、oll、omem:输出缓冲区,可配置容量,同样不受maxmemory限制超出产生异常,obl代表固定缓冲区长度16KB,oll代表动态缓冲区长度,omem代表总使用字节数,obl返回较小结果,oll返回较大结果,需监控内存抖动或配置上控制。
      • age、idle:代表已连接时间和空闲时间、idle过大时说明客户端一直空闲。
      • maxclients、timeout:最大连接数默认10000、默认没超时,超过后客户端强制关闭。
      • flag:当前客户端状态,如正在执行monitor或正在等待阻塞时间等等
    1. RDB:
    • RDB:压缩的二进制文件,是Redis在某个时间点的快照,适用于备份、全量复制,回复速度远远快于AOF,但因为是全量快照,所以不能做到实时备份。
    • bgsave:创建子线程,生成RDB保存到硬盘的指令。指令分手动触发和自动触发两种方式,自动触发分四种情况:
      • 配置中默认有三个save m n配置即m秒内执行n次修改,则触发bgsave
      • 从节点复制时需要把主节点RDB文件发给从节点,触发一次
      • debug reload命令会生成RDB文件并置空Redis
      • 执行shutdown时,如果没开AOF会触发
    1. AOF:
    • AOF:追加修改命令(RESP格式)到缓冲区,缓冲区根据配置定期同步到磁盘,弥补了RDB的缺点。
    • appendonly:与RDB不同,AOF是配置中appendonly控制的,默认不开启。
    • appendfsync:上面提到的缓冲区同步策略,分为三种:
      • always:每次修改都要同步到AOF,不会丢数据,性能差
      • everysec(默认):每秒同步一次,性能和安全的折中
      • no:同步依靠系统调度,如缓冲区页空间满或特定时间周期。
    1. 阻塞:
    • 问题发现:客户端报异常,服务端监控,监控内容包括慢日志、大Key、每秒指令个数、内存容量、CPU、硬盘、网络IO等。
    1. 常见监控信息及获取途径:
    • 命中率:info指令,keyspace_hits:14414110、keyspace_misses:3228654
    • 客户端连接数:info clients connected_clients
    • 客户端上限:CONFIG GET maxclients
    • 内存使用率:info memory的maxmemory、used_memory、used_memory_rss、mem_fragmentation_ratio(碎片率)
    • 慢日志:SLOWLOG GET
    • 每秒操作数:info stats | grep instantaneous_ops_per_sec
    • Redis IO:info stats | grep instantaneous_input_kbps
    • 系统CPU、用户cpu

    未完

    相关文章

      网友评论

        本文标题:Redis开发与运维总结

        本文链接:https://www.haomeiwen.com/subject/fvvnzktx.html