Redis日志分析:LOADING等消息是否需关注及配置优化建议
Redis日志消息风险分析与优化方案
1. 自动RDB持久化日志
日志内容
602854:M 23 Dec 2022 09:48:54.028 * 10 changes in 300 seconds. Saving... 602854:M 23 Dec 2022 09:48:54.035 * Background saving started by pid 3266364 3266364:C 23 Dec 2022 09:48:55.844 * DB saved on disk 3266364:C 23 Dec 2022 09:48:55.852 * RDB: 12 MB of memory used by copy-on-write 602854:M 23 Dec 2022 09:48:55.938 * Background saving terminated with success
风险评估
这是Redis默认的自动RDB持久化触发日志,属于正常行为,本身无直接风险。但如果频繁触发,需关注两点:
- 写时复制(Copy-on-Write)会占用额外内存(当前12MB属于正常范围)
- 频繁的磁盘写入会增加IO负载,可能间接影响Redis响应速度
优化方案
- 调整RDB触发阈值:修改
redis.conf中的save参数,比如将默认的save 300 10(300秒内10次变更)改为更宽松的save 900 100,减少触发频率 - 结合AOF持久化:开启
appendonly yes,设置appendfsync everysec的刷盘策略,降低对RDB的依赖 - 优化业务写入:若短时间大量写入导致触发,评估合并批量写入的可行性,减少变更次数
2. 数据集加载日志
日志内容
LOADING Redis is loading the dataset in memory
风险评估
这条日志是Redis启动/重启后加载RDB/AOF文件的正常流程,但频繁出现意味着Redis频繁重启,存在明显风险:
- 重启期间Redis无法处理请求,直接影响业务可用性
- 数据集较大时,加载过程耗时较长,会进一步延长服务不可用窗口
优化方案
- 排查重启根源:结合日志3的内容,优先解决systemd配置问题(见下文)
- 缩减数据集大小:清理过期键、拆分大哈希/列表等大键,降低加载耗时
- 验证持久化文件:确保RDB/AOF文件无损坏,避免因文件问题导致加载失败触发重启
3. 系统信号触发的重启日志
日志内容
7678:signal-handler (1671738516) Received SIGTERM scheduling shutdown... 7678:M 22 Dec 2022 23:48:36.300 # User requested shutdown... 7678:M 22 Dec 2022 23:48:36.300 # systemd supervision requested, but NOTIFY_SOCKET not found 7678:M 22 Dec 2022 23:48:36.300 * Saving the final RDB snapshot before exiting. 7678:M 22 Dec 2022 23:48:36.300 # systemd supervision requested, but NOTIFY_SOCKET not found 7678:M 22 Dec 2022 23:48:36.720 * DB saved on disk 7678:M 22 Dec 2022 23:48:36.720 * Removing the pid file. 7678:M 22 Dec 2022 23:48:36.720 # Redis is now ready to exit, bye bye... 7901:C 22 Dec 2022 23:48:37.071 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit. 7901:C 22 Dec 2022 23:48:37.071 # systemd supervision requested, but NOTIFY_SOCKET not found 7914:C 22 Dec 2022 23:48:37.071 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 7914:C 22 Dec 2022 23:48:37.071 # Redis version=6.0.9, bits=64, commit=00000000, modified=0, pid=7914, just started 7914:C 22 Dec 2022 23:48:37.071 # Configuration loaded
风险评估
这里存在多个明确风险:
- SIGTERM信号触发 shutdown:Redis被外部信号终止,结合systemd警告,大概率是systemd超时配置不合理导致强制重启
- NOTIFY_SOCKET未找到:Redis无法与systemd通信,导致systemd误判服务状态,引发不必要的重启
- 频繁重启:直接降低服务可用性,每次重启加载数据集还会额外消耗系统资源
优化方案
- 修复systemd服务配置:
- 编辑Redis的systemd服务文件(通常为
/etc/systemd/system/redis.service) - 添加或修改以下配置项:
[Service] Type=notify NotifyAccess=main TimeoutStartSec=300 TimeoutStopSec=300 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd - 重新加载配置并重启服务:
systemctl daemon-reload systemctl restart redis
- 编辑Redis的systemd服务文件(通常为
- 检查资源限制:确保Redis有足够的内存、文件句柄等资源,避免因资源耗尽触发系统终止信号
- 升级Redis版本:当前使用6.0.9,建议升级到6.2.x或7.x等稳定新版本,修复旧版本的systemd兼容性问题
内容的提问来源于stack exchange,提问作者MagePsycho
相关产品推荐
相关产品推荐

