复制机制的故障诊断
简介复制机制的故障诊断
首先介绍一个小的知识点,Redis的debug sleep命令可以阻塞实例,使用方式:
127.0.0.1:6379> DEBUG sleep 80
OK
(80.10s)
在配置redis复制机制我们了解,在处理完写入命令后,主实例会将这些命令发送给它的从实例以便实现主从实例之间的数据同步。从主实例的角度来看,要判断从实例是否仍在正常运行,就需要每隔一段时间向从实例发送一个PING命令,我们可以通过配置文件或redis-cli修改repl-ping-slave-period参数来调整这个间隔。PING命令默认时间为10s。从从实例的角度来看,从实例会每秒向主实例发送REPLOCNF ACK {offset}来报告它的复制偏移量。对于PING和REPLCONF ACK来说,都可以通过repl-timeout指定超时时间。复制默认的超时时间为60s。如果两次PING和REPLCONF ACK之间的间隔时间比超时时间长,或者repl-timeout期间主从实例没有数据流量,那么主从之间的复制连接将会断开。
在实际生产环境中,repl-ping-slave-period的值必须小于repl-timeout。否则,只要每次主实例和从实例咩有流量时就会造成复制超时。通常,因为redis服务器命令处理引擎是单线程的,所有阻塞操作可能造成复制超时。为了避免复制超时的发生,我们应该尽量避免使用会导致长时间阻塞的命令。在大多数情况下,repl-timeout的默认值是足够的。
Redis的键过期机制主要是由主实例驱动的,也就是,当主实例中的键到期时,它会向所有的从实例发送一个del命令,在同步期间,del命令也会被放到复制客户端缓冲区中。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
Pushgateway是一个独立的服务,Pushgateway位于应用程序发送指标和Prometheus服务器之间。
最近想把公司的内网几台服务器能通过打开一个网站的方式进行管理,所以寻求了一圈最终选择了Teleport。Teleport,这是一个使用Go语言编写的,高效的现代SSH管理工具。
Mysql in 多个字段的用法
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。