coredump是指在程式運行過程中發生異常終止或崩潰時,作業系統將程式的記憶體內容轉儲到一個特殊的檔案中,以便於後續的調試和分析。本文介紹如何為ECI Pod(即ECI執行個體)開啟coredump,以便在容器異常終止時可以查看分析coredump產生的檔案,從而定位問題原因,修複程式異常。
背景資訊
在Linux中,如果程式突然異常終止或者崩潰,作業系統會將程式當時的記憶體狀態記錄下來,儲存在一個檔案中,這種行為就叫做coredump。此時,您可以查看分析coredump產生的core檔案,找出問題原因。
Linux中支援coredump(Action為Core)的Signal如下圖所示。
更多資訊,請參見coredump file。
功能概述
ECI預設關閉coredump,避免磁碟佔用過多而導致業務不可用。您可以根據需要選擇以下一種方式開啟coredump:
方式一:開啟coredump營運任務
手動開啟coredump後,將產生一個營運任務。在容器運行異常終止或者退出時,觸發coredump產生的core檔案將自動儲存到OSS中。
方式二:自訂設定core檔案儲存路徑
支援自訂設定core檔案儲存到外掛儲存中,設定儲存路徑後,將自動開啟coredump。在容器運行異常終止或者退出時,觸發coredump產生的core檔案,將儲存到指定的外掛儲存的路徑下。
方式一便於操作,但有時效和地區等限制,可用於臨時調試和診斷程式。
產生的營運任務為一次性任務,執行成功擷取到一次core檔案後,將會關閉coredump,並且營運任務有一定的期限(12小時),超出時間後任務將會失效。
不支援以下地區:華北6(烏蘭察布)、華南2(河源)、華南3(廣州)、華東5(南京-本地地區)、菲律賓(馬尼拉)、韓國(首爾)、泰國(曼穀)。
方式二需要額外配置外掛儲存,在程式運行狀態不穩定的情況下,可以採用該方式確保能夠擷取到core檔案,但如果程式有問題,反覆重啟可能會產生大量core檔案。
方式一:開啟coredump營運任務
通過Elastic Container Instance控制台,可以手動開啟coredump營運任務。
為ECI執行個體開啟coredump。
單擊目標執行個體ID,開啟執行個體詳情頁面。
單擊營運頁簽,然後選擇Coredump頁簽,單擊開啟。
開啟coredump後,系統將產生一個營運任務,未觸發coredump時,任務狀態為等待中。

觸發coredump。
串連ECI執行個體,在容器內執行
sleep 100命令後按Ctrl+\鍵,觸發coredump,產生的core檔案將自動儲存到OSS中。
下載core檔案。
觸發coredump產生core檔案後,營運任務的狀態將變為成功,此時單擊對應結果列中的下載即可下載core檔案到本地。
說明如果下載沒有反應,請檢查瀏覽器的網站使用權限設定。
方式二:自訂設定core檔案儲存路徑
core檔案一般用於離線分析問題,因此設定core檔案的儲存路徑時,一般採用外掛儲存,而不是儲存在容器本地路徑,避免容器退出而丟失core檔案。ECI支援自訂設定core檔案儲存路徑,設定後將自動開啟coredump。
配置的路徑不能以|開頭,即不能通過coredump來配置可執行程式。
以使用NAS作為外掛儲存為例,配置樣本如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredump-test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-core-pattern: "/data/dump-a/core" # 設定core檔案儲存路徑
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
volumeMounts:
- name: nas-volume
mountPath: /data/dump-a/
volumes: # 掛載NAS
- name: nas-volume
csi:
driver: nasplugin.csi.alibabacloud.com
fsType: nas
volumeAttributes:
server: "0389a***-nh7m.cn-shanghai.extreme.nas.aliyuncs.com"
path: "/"
vers: "3"
options: "nolock,tcp,noresvport"常見問題
觸發coredump後,在控制台下載core檔案沒有反應,怎麼辦?
如果下載沒有反應,請檢查瀏覽器的網站使用權限設定。例如Chrome瀏覽器可以參考以下方式開啟許可權:
開啟Elastic Container Instance控制台,單擊瀏覽器地址欄前面的
表徵圖,選擇網站設定。
將配置項不安全內容改為允許。
