如果您的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服务处于如下图所示的流程中。
问题原因
开源社区的systemd服务存在漏洞,该漏洞会破坏堆内存,进而导致systemd服务的进程crash
。当systemd crash
后会进入freeze
流程,且无法再恢复至正常状态。
开源社区的systemd最新版本中没有解决该问题,堆内存被破坏的根因仍在定位中。Alibaba Cloud Linux已在新的公共镜像版本中对systemd服务做了增强,如果您的systemd服务高于systemd-219-78.4.al7版本且仍然出现该问题,可运行kill -15 1命令使systemd服务恢复至正常状态。
解决方案
建议您在操作前为ECS实例创建快照备份数据,如果因异常操作造成数据丢失,可以通过快照回滚实例的云盘数据。关于快照功能的更多信息,请参见快照概述。
远程连接出现问题的ECS实例。
具体操作,请参见连接方式概述。
运行以下命令, 确认systemd服务的版本信息。
rpm -q systemd
命令行回显结果示例如下所示:
systemd-219-78.4.al7.3.x86_64
根据查询到的systemd不同版本,选择以下匹配的操作解决问题。
如果systemd版本为systemd-219-78.4.al7.3.x86_64及之前的版本,您需要依次运行以下命令:
升级systemd服务。
yum update systemd
重启ECS实例。
reboot
如果systemd版本高于systemd-219-78.4.al7.3.x86_64,并仍然出现了异常,请运行以下命令恢复systemd服务至正常状态。
kill -15 1