面试题答案
一键面试网络配置排查
- 网络连通性检查
- 使用
ping
命令测试主从节点之间的网络连通性,确保能正常通信。例如,在从节点上执行ping <主节点IP>
,查看是否有丢包或延迟过高的情况。 - 对于网络不稳定区域,可通过
traceroute
命令追踪数据包路径,查看是否存在网络设备故障或路由异常。如在从节点执行traceroute <主节点IP>
,观察路径中是否有超时或异常的节点。
- 使用
- 端口检查
- 确认 Redis 主从复制使用的端口(默认为 6379)在主从节点的防火墙中已开放。可在主从节点上分别执行
iptables -L
或firewall -cmd --list -ports
查看端口开放情况,并通过iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
或firewall -cmd --add -port = 6379 / tcp --permanent
及firewall -cmd --reload
开放端口。 - 检查网络设备(如路由器、交换机)上是否对 Redis 端口进行了限制或策略配置,若有,需调整策略以允许主从节点间的通信。
- 确认 Redis 主从复制使用的端口(默认为 6379)在主从节点的防火墙中已开放。可在主从节点上分别执行
- 网络拓扑分析
- 审查整个网络拓扑结构,查看是否存在网络瓶颈或单点故障。例如,某些网络链路带宽是否不足,是否有核心交换机或路由器出现性能问题。
- 对于复杂网络环境,考虑使用网络监控工具(如 Nagios、Zabbix 等)实时监测网络流量、带宽利用率等指标,以便及时发现潜在的网络问题。
Redis 参数设置排查
- 主节点参数
- 检查
repl - timeout
参数,该参数定义了主从节点之间连接的超时时间。若设置过短,可能在网络不稳定时导致连接过早中断,影响复制。可适当调大该参数,例如从默认的 60 秒调整为 120 秒,在 Redis 配置文件中修改repl - timeout 120
并重启 Redis 服务。 - 确认
max - clients
参数设置是否合理。若设置过小,可能导致从节点连接主节点时出现连接拒绝的情况。根据系统资源和实际连接需求适当增大该参数,如max - clients 10000
。 - 查看
repl - diskless - sync
参数,此参数决定是否使用无盘复制。在网络不稳定环境下,无盘复制可能会因数据传输中断而失败。可尝试关闭无盘复制,即设置repl - diskless - sync no
,然后重启 Redis 主节点服务。
- 检查
- 从节点参数
- 检查
slave - priority
参数,该参数用于设置从节点的优先级。较低优先级的从节点在故障恢复时可能较晚被选中。若希望某个从节点优先恢复复制,可适当调高其优先级,如slave - priority 10
。 - 确认
repl - ping - slave - period
参数,它定义了从节点向主节点发送心跳的时间间隔。若设置过大,可能导致主节点在较长时间未收到心跳后误认为从节点已断开。可适当调小该参数,如从默认的 10 秒调整为 5 秒,在 Redis 配置文件中修改repl - ping - slave - period 5
并重启 Redis 从节点服务。
- 检查
系统资源利用排查
- CPU 资源
- 使用
top
或htop
命令在主从节点上查看 CPU 使用率。若 CPU 使用率过高,可能影响 Redis 复制性能。分析是哪些进程占用了大量 CPU,若有无关进程,可考虑终止或调整其优先级。 - 对于 Redis 自身,检查是否存在复杂的命令(如
SORT
、KEYS
等)在主从节点上频繁执行,导致 CPU 负载过高。若有,可优化业务逻辑,避免此类命令在高负载时段执行。
- 使用
- 内存资源
- 通过
free -h
命令查看主从节点的内存使用情况。若内存不足,可能导致 Redis 运行不稳定,影响复制。检查是否有其他进程占用过多内存,可通过调整系统内存分配策略或终止不必要的进程释放内存。 - 确认 Redis 的内存配置参数(如
max - memory
)是否合理。若设置过小,可能导致数据无法正常存储和复制。根据实际数据量和业务需求适当增大max - memory
,如max - memory 4gb
,并调整相应的内存淘汰策略(如max - memory - policy allkeys - lru
)。
- 通过
- 磁盘资源
- 执行
df -h
命令查看主从节点的磁盘空间使用情况。若磁盘空间不足,可能影响 Redis 的持久化功能(如 AOF 或 RDB 文件的生成),进而影响复制。清理不必要的文件,释放磁盘空间。 - 检查磁盘 I/O 性能,可使用
iostat
命令查看磁盘读写速率、I/O 等待时间等指标。若磁盘 I/O 性能低下,可能导致持久化文件写入缓慢,影响复制。考虑更换高性能磁盘或优化磁盘 I/O 调度策略。
- 执行
其他排查
- Redis 版本检查
- 由于是旧版 Redis 主从集群,确认当前版本是否存在已知的复制故障问题。查询 Redis 官方文档或社区论坛,了解是否有针对该版本的修复补丁或解决方案。若有,考虑升级 Redis 版本到稳定且修复相关问题的版本。
- 日志分析
- 查看 Redis 的日志文件(默认位于
/var/log/redis/redis - server.log
),在主从节点上分析日志内容。日志中会记录复制故障的详细信息,如连接断开原因、复制错误类型等,根据日志提示进一步定位和解决问题。例如,若日志提示“MASTER <-> SLAVE sync started”后紧接着“Connection with master lost”,可能是网络或配置问题导致连接中断,需结合上述排查方法进一步分析。
- 查看 Redis 的日志文件(默认位于