本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
偵錯 HealthOmics 工作流程執行
HealthOmics 透過數個來源報告執行的行為,每個來源都會回答不同的問題。對於失敗的執行,請按照此順序讀取它們,而不是從日誌開始:
閱讀執行記錄,了解執行是否失敗以及原因。
如果任務失敗,請讀取任務記錄,其中任務失敗,以及哪些執行個體類型。執行也會在建立任何任務之前或完成每個任務之後失敗。
讀取日誌:任務報告內容的任務日誌、任何任務外執行報告內容的執行日誌,以及引擎報告內容的引擎日誌。
讀取執行指標,並針對任務消耗的內容執行資訊清單日誌。
對於已完成但比您預期速度慢或更昂貴的執行,請從 開始比較相同工作流程的執行。
基於 中提供的原因,本主題中的資源和成本指導適用於私有工作流程私有 HealthOmics 工作流程的執行最佳化。如需下列步驟使用的 API 操作和回應欄位,請參閱 取得執行資訊。
在此主題的命令中,將下列值取代為您自己的值:
run_id-
您要偵錯的執行 ID。
duration-
aws logs tail 讀取的視窗:相對時間,例如
2h表示最近完成的執行,或時間戳記,例如2026-03-26T22:00:00表示較舊的執行。 run_uuid-
uuid該執行記錄的欄位。 task_id-
該執行中失敗任務的 ID。
workflow_id-
您要列出其執行的工作流程 ID。
診斷失敗的執行
診斷失敗的執行
-
擷取執行記錄,並讀取
status、statusMessage、failureReason和logLocation。保留回應:後續步驟會使用它。logLocation會提供執行日誌 (runLogStream) 和引擎日誌 () 的 ARNsengineLogStream。aws omics get-run --idrun_id在
failureReason中查詢 的值執行失敗原因。如果status不是FAILED,請執行狀態值改為參閱 。有些失敗會在 HealthOmics 建立任何任務之前或每個任務完成後發生,因此不會留下任務記錄供接下來三個步驟讀取。角色、輸入、匯入或匯出失敗是其中之一;因此,HealthOmics 在建立任務之前拒絕的映像 (
ECR_IMAGE_NOT_FOUND、ECR_PERMISSION_ERROR、ECR_REPOSITORY_NOT_FOUND或INVALID_ECR_IMAGE_URI)。對於其中任何一個,請跳至此程序稍後的執行日誌。對於映像失敗,請statusMessage命名映像 URI,因此請從 私有工作流程的容器映像和 繼續Amazon ECR 許可。如果下一個步驟確實傳回失敗的任務,請改為讀取該任務。 -
列出失敗的任務。每個項目都包含任務的
taskId,下一個步驟使用它,加上其名稱、其creationTime,以及一旦達到它們,其執行個體類型、startTime和stopTime。aws omics list-run-tasks --idrun_id--status FAILED如果這未傳回任何任務,則執行是步驟 1 中的其中一個案例:略過接下來的兩個步驟並讀取執行日誌。
-
針對每個失敗的任務,擷取其記錄。它會
logStream將failureReason、imageDetails、statusMessage和 新增至上一個步驟傳回的內容。logStream是下一個步驟讀取之日誌串流的 ARN,而串流的名稱會跟隨log-stream:其中。aws omics get-run-task --idrun_id--task-idtask_id -
讀取任務日誌。說明失敗的事件位於串流結尾。
aws logs tail /aws/omics/WorkflowLog \ --log-stream-names run/run_id/task/task_id\ --sinceduration將
持續時間設定為在任務執行之前開始:命令從 開始讀取,直到現在為止,其預設時段是最後 10 分鐘,因此先前完成的執行不會傳回任何事件。如需日誌群組和每個串流的格式,請參閱 CloudWatch 中的日誌。注意
如需了解任務可能完全沒有日誌的原因,以及讓任務更易於偵錯的方法,請參閱 對工作流程任務進行故障診斷。
-
讀取執行的其他兩個日誌中任何一個日誌都會回答您在這裡的問題。兩者都使用不同的串流執行步驟 4 命令。
aws logs tail /aws/omics/WorkflowLog \ --log-stream-names run/run_id\ --sinceduration- 執行沒有失敗的任務
-
讀取執行日誌
run/,如上述命令所示。它會報告執行本身的進度,包括沒有任務但失敗的匯入和匯出步驟。如需報告的內容,請參閱 HealthOmics 工作流程的日誌類型。run_id - 任務失敗,且其日誌未說明原因
-
閱讀引擎日誌
run/,其會報告引擎因故障而產生的項目,例如工作流程定義中的位置。其 ARNrun_id/enginelogLocation.engineLogStream來自步驟 1;如果該欄位不在回應中,則執行沒有引擎日誌。若要讀取引擎名稱位置的定義,請將其匯出。下列命令會針對執行所使用的定義傳回下載 URL。
aws omics get-workflow --idworkflow_id--export DEFINITION
在何處繼續取決於失敗原因。下列清單涵蓋最常見的資源和容器故障。如需了解使用的任務,這會告訴您故障是否為大小問題,請參閱 將調查結果轉換為成本和規模調整變更。
無法_START_CONTAINER_ERROR、無法_START_CONTAINER_SIZE_ERROR或IMAGE_VERIFICATION_FAILURE-
HealthOmics 已建立任務且無法啟動其容器,因此任務不會產生日誌。從任務記錄的 取得映像
imageDetails,然後參閱 私有工作流程的容器映像。 OUT_OF_MEMORY_ERROR-
使用其執行指標或將調查結果轉換為成本和規模調整變更位於 的執行資訊清單日誌中的統計資料如何調整工作流程的運算和儲存體大小?,將任務的記憶體使用量與其配置進行比較,如中所述。然後在工作流程定義中增加記憶體,並檢查新值在 中選取的執行個體類型HealthOmics 任務的運算和記憶體需求。
TASK_TIMED_OUT或RUN_TIMED_OUT-
確認任務在逾時過期時是否仍在運作。如果沒有,請將其視為沒有回應而非緩慢,並參閱 無回應執行的指引。如果結束執行的限制來自執行群組,請參閱 使用 HealthOmics 執行群組。
使用執行指標檢查資源使用情況
執行指標涵蓋仍在進行中的執行,因此您可以在執行完成之前使用它們。執行存在哪些序列取決於其執行儲存體類型、其暫存儲存模式,以及其任務是否請求加速器,因此請先檢查 中的條件,可用的指標再得出指標遺失的結論。如果執行完全沒有序列,請檢查其角色是否可以發佈它們,如中所述啟用執行的指標。如需查詢語法和主控台程序,請參閱 查詢 HealthOmics 執行指標。
使用執行資源標籤,將每個查詢範圍限定為一個執行。每個任務指標也會攜帶任務資源標籤,將一系列加入任務記錄及其日誌。如需這兩個標籤,請參閱 共同 屬性。
注意
CloudWatch 會同時限制 PromQL 查詢傳回的時間序列數量及其跨越的時間範圍。執行會為每個任務指標為每個任務產生至少一個序列,以及指標依方向或 GPU 分割的更多項目。對於具有許多任務的執行,請在查詢本身中彙總序列,或篩選至一個任務、一個方向或一個 GPU。將長時間執行分割為連續時段。如需目前的限制,請參閱 PromQL 限制。
比較相同工作流程的執行
當執行速度比先前相同工作流程的執行速度慢或更昂貴時,請依任務比較兩個執行任務。依名稱比對任務,而非依任務 ID 比對:擷取兩個執行的任務、依 分組任務name,並比較每個名稱的持續時間和尖峰值。每個執行的資訊清單日誌的一次讀取會為您提供每個任務的時間,以及項目回報的時間、峰值; ListRunTasks會為您提供仍在進行的執行時間,而沒有先前程序使用的--status FAILED篩選條件。
比較每個任務的兩個範圍: startTime 與 stopTime是任務的持續時間, creationTime startTime則是等待啟動的時間,涵蓋其在 中的待定和啟動階段任務狀態值。當每個任務的持續時間相符時,執行可能會比另一個執行慢得多,因為沒有任務指標可涵蓋等待。
注意
一次執行中的數個任務可以共用名稱,而且名稱中的散佈索引不一定涵蓋兩個執行中的相同輸入資料。比較共用名稱之任務的彙總,例如最長持續時間或最高峰值,而不是依索引配對索引。
若要建立工作流程的正常情況,而不是比較兩個執行,請彙總一組已完成的執行。Run Analyzer 會在 --batch 模式下執行此操作,如 中所述執行之間檔案大小差異的影響。若要自行收集執行,請在 ListRuns上篩選 的回應workflowId。操作沒有自己的工作流程篩選條件,因此在篩選條件縮小之前,ListRuns頁面會逐一查看每個完成的執行。
aws omics list-runs --status COMPLETED \ --query "items[?workflowId=='workflow_id'].id"
一組執行的分佈,而不是任何單一執行,會顯示任務的配置是否符合資料中的變異,以及看起來緩慢的執行是否超出正常範圍。
將調查結果轉換為成本和規模調整變更
執行資訊清單日誌中消耗的任務,其串流為 manifest/run/。HealthOmics 會在執行完成後寫入,因此請設定達到執行停止時間的run_id/run_uuid持續時間,而非任務的持續時間。使用與其他串流相同的aws logs tail命令來讀取。如需其報告的統計資料,請參閱 HealthOmics 工作流程的日誌類型。
資訊清單任務項目會報告保留的任務、其執行個體類型及其持續時間。它會報告任務與這些任務搭配使用的內容,但不是針對每個任務。當項目未報告用量,或報告少於任務的工作時,會改為根據任務的執行指標來計算大小,原因在 中。 標註
三種 HealthOmics 行為會限制變更儲存的內容:
任務的成本遵循 HealthOmics為您請求的資源選取的執行個體類型,而不是任務使用的資源。請參閱 HealthOmics 任務的運算和記憶體需求。
任務費用具有最低計費持續時間,因此縮短已經短暫的任務不會節省任何費用。請參閱 執行狀態的定價影響。
靜態執行儲存有固定大小,因此減少只會在降至支援較小的大小時變更帳單。請參閱 靜態執行儲存。
如需這些調查結果饋送至的最佳化方法,請參閱 最佳化執行的方法。