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