- 首页 >
- 问答 >
-
云计算 >
- centos redis配置故障排查方法有哪些
centos redis配置故障排查方法有哪些
小樊
41
2025-11-15 20:37:54
CentOS Redis 配置故障排查方法
一 快速定位流程
- 确认服务状态与端口:使用命令查看 Redis 是否运行、是否监听端口 6379,并快速验证本地连通性。
- 命令示例:
- systemctl status redis
- ss -lntp | grep 6379
- redis-cli -h 127.0.0.1 -p 6379 ping(应返回 PONG)
- 查看日志定位错误:优先检查 Redis 日志文件(常见路径 /var/log/redis/redis-server.log 或 /var/log/redis/redis.log),必要时提高日志级别到 debug 复现问题。
- 命令示例:
- tail -f /var/log/redis/redis-server.log
- grep -i error /var/log/redis/redis-server.log
- 在 /etc/redis.conf 中设置:loglevel debug,然后重启再观察
- 校验配置与语法:用 redis-server 直接加载配置文件做语法与启动项校验,能提前发现配置错误。
- 命令示例:redis-server /etc/redis.conf
- 核对关键配置项:重点检查 bind、port、requirepass、daemonize、logfile、dir 等是否与预期一致,避免因参数不当导致无法启动或无法远程连接。
二 常见故障与修复要点
- 服务无法启动
- 可能原因:配置语法错误、端口被占用、目录或文件权限不足、SELinux 策略限制。
- 排查与修复:
- 用 redis-server /etc/redis.conf 校验配置并修复报错
- 检查端口占用:ss -lntp | grep 6379;必要时 kill 占用进程或更换端口
- 检查数据与日志目录权限(常见为 redis:redis,权限 770)
- 检查 SELinux:sestatus;临时 setenforce 0 验证,再配置正确的 SELinux 策略或布尔值
- 本地能连,远程连不上
- 可能原因:bind 仅绑定 127.0.0.1、启用了 protected-mode、未放行 6379/tcp 防火墙、监听地址/端口不对。
- 排查与修复:
- 配置 bind 为 0.0.0.0(或指定内网网段),并确保 protected-mode 与安全策略匹配
- 防火墙放行:firewall-cmd --add-port=6379/tcp --permanent && firewall-cmd --reload
- 从外部使用 redis-cli -h <服务器IP> -p 6379 -a <密码> 测试连通性
- 启动后立即退出或 systemctl 启动超时
- 可能原因:配置错误导致进程立即退出、Type=forking 与后台运行方式不匹配、资源限制(如内存不足 OOM)。
- 排查与修复:
- 查看日志与 systemctl status/ journalctl -xe 获取退出原因
- 校验配置、必要时调整服务 Type 与后台策略
- 检查系统内存与 OOM 情况,必要时设置 maxmemory 与淘汰策略(如 allkeys-lru)
- 间歇性卡顿或“挂起”
- 可能原因:内存不足、高并发请求超过处理能力、持久化阻塞、网络抖动。
- 排查与修复:
- 监控 info 输出中的 memory、clients、instantaneous_ops_per_sec 等指标
- 优化持久化策略(RDB/AOF 取舍)、限流与连接数(如 maxclients)
- 检查慢查询与网络延迟,必要时扩容或引入集群/分片
三 配置核查清单
- 网络与安全
- bind:需要远程访问时使用 0.0.0.0(或内网白名单),仅本地调试可用 127.0.0.1
- protected-mode:远程开放访问时与密码/绑定配合,避免误开启导致拒绝
- port:6379(或自定义端口),变更后同步防火墙与客户端
- requirepass:为远程访问设置强密码,客户端连接时提供 -a 或在代码中配置
- 运行与进程
- daemonize:与 systemd 配合通常使用 no(由 systemd 托管),避免双重 fork 导致 systemctl 误判
- supervised:如使用 systemd,可设为 systemd 以获得更好的生命周期管理
- 日志与目录
- logfile:明确路径(如 /var/log/redis/redis-server.log),并确保目录与文件可写
- dir:工作目录(如 /var/lib/redis),RDB/AOF 文件将在此生成,检查磁盘空间与权限
- 资源与持久化
- maxmemory / maxmemory-policy:结合业务设置上限与淘汰策略(如 allkeys-lru)
- save / appendonly:按需开启 RDB 快照或 AOF,关注 fork 阻塞与重写影响
- 连接与性能
- maxclients:结合系统 ulimit -n 设置合理上限,避免连接风暴
- timeout / tcp-keepalive:及时回收空闲连接,提升稳定性
四 常用命令速查
- 服务与端口
- systemctl status redis
- ss -lntp | grep 6379
- 本地连通性
- redis-cli ping(返回 PONG 为正常)
- redis-cli -h -p 6379 -a <密码>
- 日志与配置
- tail -f /var/log/redis/redis-server.log
- grep -i error /var/log/redis/redis-server.log
- redis-server /etc/redis.conf(配置语法与启动校验)
- grep ^logfile /etc/redis.conf(确认日志路径)
- 防火墙与网络
- firewall-cmd --state
- firewall-cmd --add-port=6379/tcp --permanent && firewall-cmd --reload
- telnet 6379(测试端口连通性)