FAQ Redis与etcd连接异常

6 阅读2分钟

Skeyevss FAQ:Redis 与 etcd 连接异常

试用安装包下载 | SMS | 在线演示

项目地址github.com/openskeye/g…


1. 问题现象

服务启动报错退出、接口间歇 500、分布式锁/缓存失效;日志中出现 Redis/etcd 超时、connection refused、context deadline exceeded


2. Redis 常见原因

  • 地址或端口错误:与 docker-compose 中服务名、映射端口不一致;
  • 密码与 DB 索引:生产启用 ACL 或 requirepass 后未同步配置;
  • 网络分区:K8s 中 Pod 与 Redis 不在同一网络策略允许范围;
  • 内存满或淘汰策略:导致写入失败或键被大量驱逐,业务表现为「状态丢失」。

排查步骤:用 redis-cli -h -p ping、检查慢日志与 INFO,确认与业务配置一致。


3. etcd 常见原因

  • 客户端 URL 与对端 advertise URL 不匹配:集群成员变更后旧配置未更新;
  • 证书 TLS:启用 mTLS 时 CA/证书路径错误或过期;
  • 磁盘 IO 延迟:etcd 对延迟敏感,磁盘饱和会导致选主抖动;
  • 版本不兼容:客户端库与服务器大版本差异过大。

4. 与本项目架构的关系

在典型部署中,Redis 常承担缓存、会话、限流或消息中转;etcd 常承担服务发现或配置协调。任一依赖不可用可能导致 部分服务拒绝启动降级行为不符合预期


5. 恢复与应急

  1. 先恢复依赖进程健康(重启、扩容、修复磁盘);
  2. 再重启依赖其的业务服务,避免半初始化状态;
  3. 若 etcd 集群脑裂,需按官方运维手册修复,勿随意删除数据目录

6. 监控建议

对 Redis:连接数、内存、命中率、延迟分位;对 etcd:leader 变更次数、提交延迟、磁盘 fsync 耗时。提前告警比事后查日志成本低得多。


中间件故障往往表现为「随机、多点」业务异常,定位时优先看 共享依赖 而非单接口代码。