首页/AI/大模型部署与运维速查/用 systemd 托管引擎进程
运维监控与排障50 条

用 systemd 托管引擎进程

systemd 托管要点:Restart=on-failure 控制自愈、EnvironmentFile 收敛密钥与参数、TimeoutStopSec 配合优雅退出;改配置不动 unit 文件。

为什么用 systemd 托管

把推理引擎交给 systemd 管理,换来开机自启、崩溃后自动拉起、日志统一进 journald,以及停止时的优雅退出。相比 nohup 或 screen 起进程,systemd 会记录退出码、按 cgroup 限制资源,失败时也能按策略重试,排障时有现成的状态可查。适用于 systemd 245 及以上的主流 Linux 发行版。

基本信息

适用平台systemd 245 以上的 Linux,如 Ubuntu 20.04、CentOS 7 以上
unit 路径/etc/systemd/system/ 下的服务文件
常用指令systemctl daemon-reload / restart / status
日志查看journalctl -u 服务名 -f
权限要求root 或具备 sudo 的运维账号
资源限制文件描述符与 CPU、内存可按需在 unit 内配置

典型使用场景

  • 开机自启:机器重启后引擎自动拉起,不必等人工登录处理
  • 崩溃自愈:进程异常退出后按策略重启,缩短服务中断时间
  • 优雅退出:收到停止信号后留出时间把在途请求处理完
  • 参数收敛:启动参数与环境变量写进独立文件,便于审计与回滚
  • 日志归集:标准输出进 journald,可与同机其他服务统一检索
  • 多实例托管:同一份 unit 模板用实例化服务区分模型与端口,避免复制粘贴出错

完整 unit 示例

完整 unit 示例
[Unit]
Description=vLLM Server
After=network-online.target nvidia-persistenced.service
Wants=network-online.target

[Service]
Type=simple
ExecStart=/opt/venv/bin/vllm serve /models/qwen --port 8000
Restart=on-failure
RestartSec=5
EnvironmentFile=/etc/llm/env
TimeoutStopSec=90
LimitNOFILE=65535
User=llm

[Install]
WantedBy=multi-user.target

常用操作

常用操作
sudo systemctl daemon-reload            # 改完 unit 必须先重载
sudo systemctl restart vllm             # 重启生效
systemctl status vllm --no-pager        # 查看状态与最近日志
journalctl -u vllm -n 100 --no-pager    # 查看最近 100 行日志

关键选项读法

选项作用常见取值
Restart退出后是否自动拉起定位阶段用 on-failure
RestartSec两次重启之间的等待五到十秒
TimeoutStopSec停止时等待优雅退出的秒数长请求场景给到六十秒以上
EnvironmentFile集中加载环境变量与启动参数权限收紧的独立文件
LimitNOFILE文件描述符上限大并发下调到六万以上
User以哪个账号运行进程专用低权限账号
改完 unit 文件必须先 daemon-reload 再重启,否则仍按旧配置启动;参数尽量放在环境变量文件里,unit 本身保持稳定,回滚时只换环境文件。
查退出原因用 systemctl status 配合 journalctl -u,重点看退出码与信号:被强杀的进程通常留下 137 这类记录,对应内存不足或停止超时。
改完配置先做语法级校验:systemd-analyze verify 能提前发现拼写错误;确认无损后再进重启环节,避免因一个字段拼错导致服务起不来。

易错点

  • Restart=always 遇上崩溃循环:反复拉起会掩盖根因,先在 on-failure 下定位
  • TimeoutStopSec 给得太短:进程被强杀,缓存与显存来不及释放,重启后可能出现占用残留
  • LimitNOFILE 保持默认值:高并发下句柄耗尽,报错信息常指向业务而非资源上限
  • 启动参数或密钥直接写进 unit:systemctl show 与配置仓库都能读到,密钥应走权限收紧的环境文件

数据来源与参考

  • systemd.service 手册(freedesktop.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌