如果您的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