使用 systemd 的原生功能来实现 Redis 的自动监控和重启,而不是依赖额外的脚本最佳实践方案

使用 systemd 的原生功能来实现 Redis 的自动监控和重启,而不是依赖额外的脚本最佳实践方案

  • 方案 1:配置 systemd 服务文件(推荐)
    • 1. 检查/创建 Redis 的 systemd 服务文件
    • 2. 配置关键参数(覆盖配置示例)
    • 3. 重载 systemd 并启用服务
    • 4. 验证配置
  • 方案 2:通过 systemd 定时器监控(替代 crontab)
    • 1. 创建监控服务
    • 2. 创建定时器
    • 3. 启用定时器
  • 关键优势说明
  • 故障排查命令
  • 注意事项

方案 1:配置 systemd 服务文件(推荐)

Redis 通常已经自带 systemd 服务文件(如 /lib/systemd/system/redis-server.service),我们只需优化它以实现自动重启。

1. 检查/创建 Redis 的 systemd 服务文件

sudo systemctl edit redis-server  # 创建覆盖配置(推荐)
# 或直接编辑(如果文件不存在)
sudo vim /etc/systemd/system/redis-server.service

2. 配置关键参数(覆盖配置示例)

[Service]
Restart=always
RestartSec=5s
StartLimitInterval=0  # 禁用重启频率限制(根据需求调整)
ExecStartPre=/bin/sh -c 'echo "Redis 启动前检查: $(date)" >> /var/log/redis/restart.log'
ExecStopPost=/bin/sh -c 'echo "Redis 停止事件: $(date)" >> /var/log/redis/restart.log'[Install]
WantedBy=multi-user.target

在这里插入图片描述

3. 重载 systemd 并启用服务

sudo systemctl daemon-reload
sudo systemctl enable redis-server  # 开机自启sudo systemctl start redis-server   # 立即启动

4. 验证配置

sudo systemctl show redis-server -p RestartUSec,RestartSec  # 查看重启策略
journalctl -u redis-server -f  # 实时查看日志

方案 2:通过 systemd 定时器监控(替代 crontab)

如果需要更复杂的监控逻辑(如依赖检查),可以创建单独的监控服务:

1. 创建监控服务

sudo vim /etc/systemd/system/redis-monitor.service

内容:

[Unit]
Description=Redis 存活监控
After=network.target[Service]
Type=oneshotExecStart=/bin/bash -c 'if ! systemctl is-active --quiet redis-server; then systemctl restart redis-server; fi'

2. 创建定时器

sudo vim /etc/systemd/system/redis-monitor.timer

内容:

[Unit]
Description=每30秒检查一次Redis状态[Timer]
OnBootSec=1min
OnUnitActiveSec=30s[Install]WantedBy=timers.target

3. 启用定时器

sudo systemctl daemon-reload
sudo systemctl enable --now redis-monitor.timer

关键优势说明

1.原生 systemd 集成:
Restart=always 实现崩溃自动重启
通过 journalctl 集中管理日志
避免 crontab + shell 脚本的冗余架构

2.进程管理优化:
systemd 会跟踪 Redis 主进程
支持 cgroup 资源限制(可在服务文件中添加 MemoryLimit 等)

3.依赖管理:
可通过 After= 和 Requires= 配置服务依赖

故障排查命令

# 检查服务状态(重点关注 Active 和 Main PID)
sudo systemctl status redis-server# 查看最近100条日志
journalctl -u redis-server -n 100 --no-pager# 测试手动重启
sudo systemctl restart redis-server# 检查依赖关系
systemctl list-dependencies redis-server

注意事项

1.如果 Redis 频繁重启,建议:
检查 /var/log/redis/redis-server.log
调整 RestartSec 避免频繁重启导致雪崩
考虑添加 SuccessExitStatus 匹配非零退出码

2.生产环境建议搭配监控系统(如 Prometheus + node_exporter)实现可视化告警。

这种方案比 shell 脚本更可靠,因为:

由 init 系统直接管理进程生命周期
避免 crontab 最小间隔(1分钟)的限制
更好的进程控制和资源隔离

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92446.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 代码模板

Eclipse 代码模板 引言 Eclipse 作为一款功能强大的集成开发环境(IDE),深受广大开发者的喜爱。在编程过程中,使用代码模板可以大大提高开发效率,减少重复劳动。本文将详细介绍 Eclipse 代码模板的配置、使用方法以及一…

输电线路防外破声光预警装置 | 防山火/防钓鱼/防施工安全警示系统

在输电网络的安全保障中,外力破坏是一个不容忽视的问题,各类隐患可能对电力系统造成严重影响。TLKS-PMG-WP 输电线路声光防外破警示装置在应对这类挑战时,有着独特的技术表现,下面从功能和技术参数两方面进行详细介绍。核心功能解…

STM32——STM32CubeMX

总:STM32——学习总纲 一、简介 注意,非逻辑代码。 可兼容不同系列的STM32Cube固件包。 STM32Cube前置知识链接: STM32——HAL库 不可过多依赖,此工具只针对STM32芯片,类似英飞凌芯片无法配置。主要用于参考。 二、安…

Java NIO 核心原理与秋招高频面试题解析

一、NIO 概述Java NIO(New I/O 或 Non-blocking I/O)是 Java 1.4 引入的一套全新 I/O API,位于 java.nio 包下。NIO 提供了与传统 BIO(Blocking I/O)完全不同的 I/O 处理方式,通过非阻塞模式、缓冲区&#…

vue3+element-plus,el-popover实现筛选弹窗的方法

实现一个筛选框,点击筛选按钮出现弹窗,弹窗内有选择框/输入框/单选框等等,底部有重置/确定两个按钮。需求:点击筛选外部其他位置可以关闭弹窗,关闭弹窗后已编辑的数据不保存,点击确定按钮关闭弹窗&#xff…

python每日一题 贪心算法练习

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost &…

Python + Pika RabbitMQ集群压测完整方案

一、最近搭建了个rabbitmq集群 三个磁盘节点,上生产环境之前想做个压测,测试下稳定性,参考Deepseek做了如下测试方案二、核心代码实现: 配置文件 (config.py) import os RABBITMQ_NODES [amqp://admin:123456192.168.0.175:8101,…

【第7话:相机模型3】自动驾驶IPM图像投影拼接技术详解及代码示例

IPM图像投影拼接技术详解 IPM(逆透视映射)图像投影拼接技术是一种在计算机视觉中广泛应用的图像处理方法,主要用于将多个透视视图的图像转换为鸟瞰视图并拼接成一个无缝的大场景图像。该技术特别适用于自动驾驶、机器人导航和监控系统等领域&…

【测试工程思考】测试自动化基础能力建设

1 回顾 传统软件研发体系下定义的软件测试是从用户视角设计的。测试是试图穷尽用户行为的工程,从测试用例(use case)的英文定义就可见一般。测试的逻辑资产就是用自然语言去描述用户的操作行为或路径。 但随着软件工程向分布式架构和敏捷交付…

进阶向:AI聊天机器人(NLP+DeepSeek API)

什么是AI聊天机器人? AI聊天机器人是一种通过自然语言处理(NLP)技术模拟人类对话的智能程序系统。其核心是建立在机器学习算法和大型语言模型基础上的对话引擎,能够理解用户的自然语言输入,分析语境和意图,并生成符合上下文的相关回复。 这类机器人系统通常包含以下几个…

一个C#的段子

猜猜按钮的结果是啥。 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } public static bool flag true; privat…

使用 gptqmodel 量化 Qwen3-Coder-30B-A3B-Instruct

代码部分 : quantize_qwen3_coder_30b_a3b_instruct_gptq.py import os########## 环境变量设置 ########## # 当前可用的 CUDA 编号 os.environ["CUDA_VISIBLE_DEVICES"] "1" # GPU 显存资源片段优化 os.environ["PYTORCH_CUDA_ALLOC_CONF"] …

基于python、django的疫苗接种管理系统

基于python、django的疫苗接种管理系统

Go语言实战案例:使用sync.Map构建线程安全map

在并发编程中,共享资源的访问是一个绕不开的问题。Go 中的 map 在并发读写时是不安全的,直接使用可能导致程序 panic。因此,在多协程同时访问 Map 的场景下,必须采取有效的同步措施。本篇将通过一个实战案例,介绍 Go 的…

关于vue2中对接海康摄像头以及直播流rtsp或rtmp,后台ffmpeg转码后通过ws实现

最近项目中需要对接摄像头监控,海康摄像头为rtsp流格式有一个软件VLC media player,可以在线进行rtsp或者rtmp流播放,可用来测试流地址是否可用功能实现思路为后台通过fmpeg把rtsp流进行转码,然后通过ws方式进行一帧一帧推送。&am…

Docker容器强制删除及文件系统修复完整指南

Docker容器强制删除及文件系统修复完整指南 故障现象与原因分析 ​故障表现​: ERROR: for c9ca40be974d_OpIsosMD_OB unable to remove filesystem unlinkat /data/docker/storage/containers/c9ca40be974d...: structure needs cleaning​根本原因​:…

Matplotlib 知识点总结

1. 基础绘图(plot函数)基本语法:plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)功能特点:可绘制点、线和组合图形自动生成x轴(0-N-1)当x未指定时示例:绘制两点连线、多点不规则线等代码…

高可用微服务架构实战:Nacos集群+Nginx负载均衡,Spring Cloud无缝对接

"当你的注册中心挂了,整个微服务就变成了无头苍蝇。" 这是我在生产环境踩坑后最痛的领悟。今天,我将分享如何用Nacos集群Nginx搭建坚如磐石的注册中心,让你的微服务永不迷路! 在 Windows 环境下配置 Nacos 集群&#x…

Spark大数据处理实战指南

Spark 简介 Apache Spark 是一个开源的分布式计算框架,专为大规模数据处理而设计。它通过内存计算和优化的执行引擎显著提升了数据处理速度,适用于批处理、实时流处理、机器学习和图计算等场景。 核心特性 高性能:利用内存计算(In-Memory Processing)减少磁盘 I/O,比传…

浏览器缓存机制全解析:强缓存与协商缓存

浏览器缓存是浏览器为提升页面加载速度、减少服务器压力和节省网络带宽,在本地存储资源(如 HTML、CSS、JS、图片等)的机制。其核心分为强缓存和协商缓存,并涉及多种 HTTP 头字段和存储位置。以下是详细解析:⚙️ 一、缓…