温馨提示×

Ubuntu Redis配置中常见问题及解决

小樊
45
2025-12-24 14:51:00
栏目: 云计算

Ubuntu 上 Redis 配置的常见问题与排查路径

一 快速自检与定位

  • 确认服务状态与日志:使用命令查看是否运行、最近报错与配置文件路径,例如:sudo systemctl status redis-server;sudo journalctl -u redis-server -xe;grep “logfile” /etc/redis/redis.conf 查看日志文件路径。
  • 确认监听端口与进程:ss -tulnp | grep 6379 或 lsof -i :6379;必要时 ps aux | grep redis 检查是否以正确配置启动。
  • 找到配置文件位置:Ubuntu 常见为 /etc/redis/redis.conf;如使用 Snap 安装,常见为 /var/snap/redis/common/etc/redis/redis.conf;也可通过 systemctl status redis 的 ExecStart 行或 ps 输出看到实际加载的配置路径。
  • 基本连通性测试:本机执行 redis-cli ping,应返回 PONG

二 高频问题与对策

  • 服务未启动或开机不自启:执行 sudo systemctl start redis-server;如需开机自启执行 sudo systemctl enable redis-server;若修改过服务文件或配置,执行 sudo systemctl daemon-reload 后再重启。
  • 端口被占用导致启动失败:用 ss/lsof 定位占用进程 PID 并释放或 kill;必要时在 /etc/redis/redis.conf 中修改 port 为 6380 等未占用端口,重启服务。
  • 配置未生效:修改 /etc/redis/redis.conf 后必须重启:sudo systemctl restart redis-server;若通过 systemd 托管,确保 supervised 与 systemd 集成(常见为 supervised systemd)。
  • 远程连接被拒绝或超时:检查 bind 与 protected-mode。仅本机访问可用 bind 127.0.0.1;需要远程访问时改为 bind 0.0.0.0 并配置 requirepass,同时确认防火墙放行(如 sudo ufw allow 6379/tcp)。若仍受限,检查云厂商安全组规则。
  • IPv6 监听导致本地连接异常:部分环境下 bind 127.0.0.1 ::1 可能带来解析或启动问题,可改为仅 bind 127.0.0.1 测试。
  • 数据目录权限或路径错误:确保 dir 指向 /var/lib/redis 且属主为 redis:redis(sudo chown -R redis:redis /var/lib/redis);目录不存在则先创建。
  • 安全策略拦截:AppArmor/SELinux 可能阻止 Redis 绑定端口或访问目录。用 aa-status 检查并在需要时调整策略或临时设为 complain 模式验证,再修复规则。
  • 持久化相关异常:如启动时报 “LOADING Redis is loading the dataset in memory” 或 RDB/AOF 失败,检查 dir 权限、磁盘空间与持久化配置(save、appendonly 等)。

三 关键配置与优化建议

  • 绑定与保护模式:bind 127.0.0.1(仅本机)或 0.0.0.0(远程,务必配强密码与防火墙);protected-mode 建议保持 yes 并配合密码/绑定策略。
  • 端口与防火墙:默认 6379;如需变更端口,修改 port 并重启;远程访问记得放行防火墙(sudo ufw allow 6379/tcp)。
  • 守护与托管:与 systemd 配合时设置 supervised systemd,并保持 daemonize no
  • 内存与淘汰策略:设置 maxmemory(如 256mb)与 maxmemory-policy(如 allkeys-lru)以避免 OOM 与性能抖动。
  • 持久化策略:按业务选择 RDB(save 900 1、save 300 10、save 60 10000)或开启 AOF(appendonly yes),并规划备份与监控。
  • 系统级优化(可选,提升稳定性/性能):
    • 提高 TCP 队列:/proc/sys/net/core/somaxconn 建议不低于 511(临时 echo 511 > …,永久写入 sysctl.conf)。
    • 内存过量使用:vm.overcommit_memory=1(避免后台保存失败)。
    • 透明大页:echo never > /sys/kernel/mm/transparent_hugepage/enabled(降低延迟与内存开销)。

四 常用命令速查

  • 安装与启停:sudo apt update && sudo apt install redis-server -y;sudo systemctl start|stop|restart|status redis-server;sudo systemctl enable redis-server。
  • 连通与端口:redis-cli ping;ss -tulnp | grep 6379;lsof -i :6379
  • 日志与配置:sudo journalctl -u redis-server -xe;grep “logfile” /etc/redis/redis.conf;cat /var/log/redis/redis-server.log。
  • 查找配置文件:sudo find / -name redis.conf;ps aux | grep redis;systemctl status redis 查看 ExecStart;Snap 安装路径为 /var/snap/redis/common/etc/redis/redis.conf

0