除錯工作
請參閱這些疑難排解提示,了解如何排除 IBM Cloud® Code Engine 工作及該工作的執行過程中的問題。
要考量的工作限制
每個專案可以擁有的工作數目上限為 100。 在您需要移除或清除舊的工作執行之前,每個專案最多只能執行 100 個工作執行。
如需工作 (包括記憶體及 CPU) 限制的相關資訊,請參閱 Code Engine的限制及配額。
使用 CLI,您可以使用 ibmcloud ce project get 指令來顯示限制及現行使用情形的相關資訊。 例如:
ibmcloud ce project get --name myproject
輸出範例
Getting project 'myproject'...
OK
Name: myproject
ID: abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status: active
Enabled: true
Application Private Visibility Supported: true
Selected: true
Region: us-south
Resource Group: default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age: 52d
Created: Tue, 28 Sep 2021 05:12:16 -0500
Updated: Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
Category Used Limit
App revisions 2 120
Apps 1 40
Build runs 1 100
Builds 2 100
Configmaps 2 100
CPU 0 128
Ephemeral storage 0 512G
Functions 0 20
Instances (active) 0 250
Instances (total) 0 2500
Job runs 13 100
Jobs 2 100
Memory 0 512G
Secrets 6 100
Subscriptions (cron) 0 100
Subscriptions (IBM Cloud Object Storage) 0 100
Subscriptions (Kafka) 0 100
取得我的工作的日誌
日誌有助於在您執行工作時對問題進行疑難排解。 您可以從主控台或使用 CLI 來檢視工作日誌。
當您從控制台查看日誌時,您必須在與您的IBM Cloud Logs項目相同的區域中建立一個 { Code Engine } 實例。 在使用 Code Engine 工作之前,您不需要建立此實例。Code Engine 可讓您輕鬆啟用工作的記載。 您可以在新增記載功能之後檢視工作日誌。 如需相關資訊,請參閱 從主控台檢視工作日誌。
使用 CLI 時,您可以顯示執行中工作之所有實例的日誌,或顯示工作之特定實例的日誌。
-
使用
ibmcloud ce jobrun list指令來列出所有已定義的工作執行; 例如,ibmcloud ce jobrun list -
使用
ibmcloud ce jobrun get指令來取得工作執行的詳細資料,包括工作執行的實例名稱; 例如,ibmcloud ce jobrun get --name myjobrun輸出範例
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances. Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances. OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29m如果您想要更精細的工作執行詳細資料,請搭配使用
--o yaml選項與jobrun get指令; 例如ibmcloud ce jobrun get --name myjobrun --o yaml。 此選項有助於在 CLI 中顯示工作執行的更詳細資訊。 -
顯示工作執行實例的日誌。
- 若要顯示工作執行特定實例的日誌,請使用
ibmcloud ce jobrun logs --instance INSTANCE_NAME指令; 例如,
ibmcloud ce jobrun logs --instance myjobrun-4-0 ``` 輸出範例 ```txt {: screen} Getting logs for job run instance 'myjobrun-4-0'... OK myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4 ``` * 若要顯示工作執行所有實例的日誌,請使用 [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs) 指令; 例如, ```txt {: pre} ibmcloud ce jobrun logs --jobrun myjobrun ``` 輸出範例 ```txt {: screen} Getting logs for all instances of job run 'myjobrun'... Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... OK myjobrun-1-0/myjobrun: Hi from a batch job! My index is: 1 myjobrun-2-0/myjobrun: Hi from a batch job! My index is: 2 myjobrun-3-0/myjobrun: Hi from a batch job! My index is: 3 myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4 ``` - 若要顯示工作執行特定實例的日誌,請使用
如需相關資訊,請參閱 使用 CLI 檢視工作日誌。
取得我的工作的系統事件資訊
當您執行工作時,系統事件資訊有助於疑難排解問題。 您可以使用 CLI 來檢視系統事件資訊。
您可以顯示工作執行所有實例的系統事件,或顯示工作執行特定實例的系統事件。
-
使用
ibmcloud ce jobrun list指令來列出所有已定義的工作執行; 例如,ibmcloud ce jobrun list -
使用
ibmcloud ce jobrun get指令來取得工作執行的詳細資料,包括工作執行實例的名稱; 例如,ibmcloud ce jobrun get --name myjobrun輸出範例
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29m如果您想要更精細的工作執行詳細資料,請搭配使用
--o yaml選項與jobrun get指令; 例如ibmcloud ce jobrun get --name myjobrun --o yaml。 此選項有助於在 CLI 中顯示工作執行的更詳細資訊。 -
顯示工作執行實例的系統事件。
- 若要顯示工作執行特定實例的事件,請使用
ibmcloud ce jobrun events --instance INSTANCE_NAME指令; 例如,
ibmcloud ce jobrun events --instance myjobrun-4-0 ``` 輸出範例 ```txt {: screen} Getting events for job run instance 'myjobrun-4-0'... OK myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 2m14s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 2m13s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 2m12s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 2m11s kubelet, 10.240.64.10 Created container myjobrun Normal Started 2m11s kubelet, 10.240.64.10 Started container myjobrun ``` * 若要顯示工作執行所有實例的事件,請使用 [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events) 指令; 例如, ```txt {: pre} ibmcloud ce jobrun events --jobrun myjobrun ``` 輸出範例 ```txt {: screen} Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events for all instances of job run 'myjobrun'... OK myjobrun-1-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-1-0 to 10.240.128.22 Normal Pulling 65s kubelet, 10.240.128.22 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.128.22 Successfully pulled image "icr.io/codeengine/firstjob" in 427.276949ms Normal Created 64s kubelet, 10.240.128.22 Created container myjobrun Normal Started 64s kubelet, 10.240.128.22 Started container myjobrun myjobrun-2-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-2-0 to 10.240.0.11 Normal Pulling 65s kubelet, 10.240.0.11 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.11 Successfully pulled image "icr.io/codeengine/firstjob" in 1.268252989s Normal Created 63s kubelet, 10.240.0.11 Created container myjobrun Normal Started 63s kubelet, 10.240.0.11 Started container myjobrun myjobrun-3-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-3-0 to 10.240.0.37 Normal Pulling 65s kubelet, 10.240.0.37 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.37 Successfully pulled image "icr.io/codeengine/firstjob" in 1.118647987s Normal Created 63s kubelet, 10.240.0.37 Created container myjobrun Normal Started 63s kubelet, 10.240.0.37 Started container myjobrun myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 65s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 63s kubelet, 10.240.64.10 Created container myjobrun Normal Started 63s kubelet, 10.240.64.10 Started container myjobrun ``` - 若要顯示工作執行特定實例的事件,請使用
瞭解工作執行索引可能失敗的原因
當工作執行索引在主控台失敗時,您可以查詢錯誤和原因,以協助排除故障、糾正問題,然後再重新執行工作執行索引。
若要管理您的工作與工作執行,請從 「Code Engine」的「專案」頁面中,點選專案清單中的專案名稱,然後點選「工作」。 在「工作執行」分頁中,查看工作執行實例。 未完成的作業執行會在「狀態」欄位中顯示為「Failed (<error>)」。
下表說明常見的作業執行索引錯誤和要採取的行動:
| 錯誤 | 說明 | 建議使用者動作 |
|---|---|---|
ContainerExitedCode |
一個包含由使用者工作負載提供的結束代碼的錯誤。 | 在您的應用程式中確定退出代碼的原因,並進行除錯。 |
ExceededEphemeralStorage |
實例在其容器中分配的短暫存儲超過允許的數量。 | 增加資源的短暫儲存。 |
ExecutableNotFound |
無法在容器中找到指定的可執行檔案。 沒有它,容器無法啟動。 | 驗證在您的容器映像中指定的入口點是否正確,以及可執行檔是否存在於映像中。 |
MaxExecutionTimeExceeded |
工作執行未在最長執行時間內完成。 如果有多個實體正在執行,所有尚未完成的實體都會顯示此錯誤。 | 增加工作執行逾時值。 |
OOMKilled |
記憶體不足的錯誤。 實例超出了分配的記憶體限制。 | 增加資源的 CPU 和記憶體。 |
解決錯誤後,按一下重新執行失敗的索引,以重新執行失敗索引的工作。
驗證工作的儲存器映像檔參照
當您使用 Code Engine 工作時,必須指定容器映像檔參照及登錄密鑰才能存取映像檔。 若要讓工作正確運作,映像檔參照及其存取內容在工作的生命期限內必須保持有效。
請參閱 如何驗證我的映像檔參照?