Alibaba Cloud Linux 2系统中systemd服务异常问题说明

如果您的Alibaba Cloud Linux 2操作系统中systemd服务运行异常,可参考文本提供的方案解决问题。

问题现象

在符合以下条件的Alibaba Cloud Linux 2实例中,系统在正常运行时实例内部署的业务有概率启动失败。

  • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位公共镜像。

  • systemd服务:systemd-219-78.4.al7及之前的版本。

该问题在系统中的具体表现为systemd服务的进程运行状态异常,或者系统产生如下日志信息:

Failed to activate service 'org.freedesktop.systemd1': timed out

当您运行systemctl daemon-reexec命令后仍无法修复异常。通过pstack 1命令可查看到systemd服务处于如下图所示的流程中。pstack 1

问题原因

开源社区的systemd服务存在漏洞,该漏洞会破坏堆内存,进而导致systemd服务的进程crash。当systemd crash后会进入freeze流程,且无法再恢复至正常状态。

说明

开源社区的systemd最新版本中没有解决该问题,堆内存被破坏的根因仍在定位中。Alibaba Cloud Linux已在新的公共镜像版本中对systemd服务做了增强,如果您的systemd服务高于systemd-219-78.4.al7版本且仍然出现该问题,可运行kill -15 1命令使systemd服务恢复至正常状态。

解决方案

说明

建议您在操作前为ECS实例创建快照备份数据,如果因异常操作造成数据丢失,可以通过快照回滚实例的云盘数据。关于快照功能的更多信息,请参见快照概述

  1. 远程连接出现问题的ECS实例。

    具体操作,请参见连接方式概述

  2. 运行以下命令, 确认systemd服务的版本信息。

     rpm -q systemd

    命令行回显结果示例如下所示:

     systemd-219-78.4.al7.3.x86_64
  3. 根据查询到的systemd不同版本,选择以下匹配的操作解决问题。

    • 如果systemd版本为systemd-219-78.4.al7.3.x86_64及之前的版本,您需要依次运行以下命令:

      1. 升级systemd服务。

        yum update systemd
      2. 重启ECS实例。

        reboot
    • 如果systemd版本高于systemd-219-78.4.al7.3.x86_64,并仍然出现了异常,请运行以下命令恢复systemd服务至正常状态。

      kill -15 1