当前位置: 首页 > web >正文

Systemd服务重启策略详解:on-failure与相关配置

Systemd服务重启策略详解:on-failure与相关配置

Systemd作为现代Linux系统的初始化系统和服务管理器,提供了强大的服务监控和自动重启功能。本文将重点介绍Restart=on-failure策略及其相关配置项的使用方法。

Restart=on-failure 策略解析

Restart=on-failure是Systemd服务单元文件中常用的重启策略,它定义了服务在何种情况下会被自动重启:

Restart=on-failure

工作特点

  • 仅在非正常退出时重启:当服务以非零退出码(表示失败)终止时,Systemd会自动重启该服务
  • 不重启主动停止的服务:如果服务是被systemctl stop命令正常停止的,Systemd不会自动重启它
  • 适用于关键服务:这种策略适合那些需要持续运行但对资源敏感的服务

与其他重启策略对比

策略描述
always无论服务如何退出都会重启
on-success仅在服务成功退出时重启(退出码为0)
on-failure仅在服务失败退出时重启(退出码非0)
on-abnormal因信号终止或超时退出时重启
on-abort仅在收到未捕获的异常信号时重启
on-watchdog仅在看门狗超时时重启

相关配置参数

RestartSec - 重启间隔

RestartSec=120
  • 指定服务失败后等待多少秒再尝试重启
  • 上例设置为120秒(2分钟),避免频繁重启消耗资源
  • 对于数据库等需要时间恢复的服务,建议设置较长间隔

StartLimitBurst - 最大尝试次数

StartLimitBurst=2
  • 定义在StartLimitInterval时间段内允许的启动尝试次数
  • 上例设置为2次(初始运行+1次重试)
  • 超过限制后,Systemd将不再尝试重启服务

StartLimitInterval - 时间窗口

StartLimitInterval=300
  • 定义StartLimitBurst计数的时间窗口(单位:秒)
  • 默认值为10秒
  • 与StartLimitBurst配合使用,防止服务进入"重启循环"

完整配置示例

[Unit]
Description=My Critical Service[Service]
ExecStart=/usr/local/bin/my-service
Restart=on-failure
RestartSec=120
StartLimitBurst=2
StartLimitInterval=300[Install]
WantedBy=multi-user.target

实际应用建议

  1. 关键服务:对于必须持续运行的服务(如数据库、消息队列),建议使用Restart=always

  2. 资源敏感服务:对于可能因资源不足偶尔失败的服务,使用on-failure配合适当的RestartSec

  3. 调试阶段:在服务开发调试期间,可以暂时禁用自动重启,以便查看失败原因

  4. 监控日志:即使配置了自动重启,也应监控服务日志,找出频繁重启的根本原因

管理命令

  • 查看服务状态:systemctl status service-name
  • 手动重启服务:systemctl restart service-name
  • 停止服务:systemctl stop service-name
  • 禁用自动重启:systemctl edit service-name然后设置Restart=no
http://www.xdnf.cn/news/8486.html

相关文章:

  • 互联网大厂Java求职面试:Spring Cloud微服务架构设计中的挑战与解决方案
  • 通义千问的视觉识别技术和特点
  • 7.6/Q1,GBD数据库最新文章解读
  • 【小程序】手机号快速验证组件如何使用对公转账方式
  • Redis7 新增数据结构深度解析:ListPack 的革新与优化
  • 全志F1c200开发笔记——移植根文件系统
  • 系分论文《论软件系统的安全性测试方法》
  • 一次复杂接口故障的抓包全过程:四款工具协同作战实录(含 Charles)
  • 初识C++:模版
  • 文献阅读——NeuroBayesSLAM
  • vue中v-clock指令
  • ROS2学习(9)------ROS2动作
  • 不使用SOAP,从PDF表单连接数据库
  • Selenium 测试框架 - Java
  • 什么是nginx的异步非阻塞
  • FFTW图像处理之频域滤波和频域分析
  • [特殊字符] 在线音频剪辑网站上线啦!
  • 在ubuntu 24安装 postgresql 17 (源码安装)
  • android property 系统
  • Claude 4 在 SWE-Bench 上得分 72.7%:对编程的意义
  • 阿里云ecs如何禁用ip的访问
  • threejs路径流动效果
  • Python打卡训练营day30-库的导入
  • Mysql索引的数据结构
  • android设计——功能临时开启与永久管控
  • FastJson1.2.24反序列化原理
  • 【Hadoop】Hadoop 的入门概述
  • 光子计算落地里程碑:实验级OSS芯片实现MNIST高效分类,登顶《Nature》子刊
  • STM32基本定时器的启动和停止
  • 多维数据助力企业网络安全