Lavori di debug
Segui i suggerimenti per la risoluzione dei problemi per scoprire come risolvere eventuali problemi relativi ai lavori di “ IBM Cloud® Code Engine ” e alle esecuzioni del tuo lavoro.
Limiti lavoro da considerare
Il numero massimo di job che è possibile avere per progetto è 100. Si è limitati a un totale di 100 esecuzioni di job per progetto prima di dover rimuovere o ripulire quelli vecchi.
Per ulteriori informazioni sui limiti per i lavori che includono memoria e CPU, vedi Limiti e quote per Code Engine.
Con la CLI, puoi utilizzare il comando ibmcloud ce project get per visualizzare le informazioni sui limiti e sull'uso corrente. Ad esempio:
ibmcloud ce project get --name myproject
Output di esempio
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
Acquisizione dei log per i miei lavori
I log possono essere utili per risolvere i problemi quando si eseguono i lavori. Puoi visualizzare i log dei lavori dalla console o con la CLI.
Quando si visualizzano i log dalla console, è necessario creare un'istanza IBM Cloud Logs nella stessa regione del progetto Code Engine. Non ti è richiesto di creare questa istanza prima di lavorare con il tuo lavoro Code Engine. Code Engine rende semplice abilitare la registrazione per i tuoi lavori. È possibile visualizzare i log del job dopo aver aggiunto le capacità di registrazione. Per ulteriori informazioni, vedi Visualizzazione dei log dei lavori dalla console.
Quando si utilizza la CLI, è possibile visualizzare i log di tutte le istanze del lavoro in esecuzione o visualizzare i log di un'istanza specifica del lavoro.
-
Utilizzare il comando
ibmcloud ce jobrun listper elencare tutte le esecuzioni di job definite; ad esempio,ibmcloud ce jobrun list -
Utilizzare il comando
ibmcloud ce jobrun getper ottenere i dettagli dell'esecuzione del lavoro, incluso il nome delle istanze per l'esecuzione del lavoro; ad esempio,ibmcloud ce jobrun get --name myjobrunOutput di esempio
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 29mSe si desidera ottenere dettagli più dettagliati sull'esecuzione del lavoro, utilizzare l'opzione
--o yamlcon il comandojobrun get; ad esempio,ibmcloud ce jobrun get --name myjobrun --o yaml. Questa opzione è utile per visualizzare informazioni più dettagliate nella CLI per l'esecuzione del lavoro. -
Visualizzare i log delle istanze dell'esecuzione del lavoro.
- Per visualizzare i log di una specifica istanza del tuo lavoro eseguito, utilizza il comando
ibmcloud ce jobrun logs --instance INSTANCE_NAME; ad esempio,
ibmcloud ce jobrun logs --instance myjobrun-4-0 ``` Output di esempio ```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 ``` * Per visualizzare i log di tutte le istanze del tuo lavoro eseguito, utilizza il comando [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs) ; ad esempio, ```txt {: pre} ibmcloud ce jobrun logs --jobrun myjobrun ``` Output di esempio ```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 ``` - Per visualizzare i log di una specifica istanza del tuo lavoro eseguito, utilizza il comando
Per ulteriori informazioni, vedi Visualizzazione dei log del lavoro con la CLI.
Richiamo delle informazioni sugli eventi di sistema per i miei lavori
Le informazioni sugli eventi di sistema possono essere utili per risolvere i problemi quando si eseguono i lavori. Puoi visualizzare le informazioni sugli eventi di sistema con la CLI.
È possibile visualizzare gli eventi di sistema di tutte le istanze di un'esecuzione lavoro o visualizzare gli eventi di sistema di una specifica istanza di un'esecuzione lavoro.
-
Utilizzare il comando
ibmcloud ce jobrun listper elencare tutte le esecuzioni di job definite; ad esempio,ibmcloud ce jobrun list -
Utilizzare il comando
ibmcloud ce jobrun getper ottenere i dettagli dell'esecuzione del lavoro, incluso il nome delle istanze dell'esecuzione del lavoro; ad esempio,ibmcloud ce jobrun get --name myjobrunOutput di esempio
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 29mSe si desidera ottenere dettagli più dettagliati sull'esecuzione del lavoro, utilizzare l'opzione
--o yamlcon il comandojobrun get; ad esempio,ibmcloud ce jobrun get --name myjobrun --o yaml. Questa opzione è utile per visualizzare informazioni più dettagliate nella CLI per l'esecuzione del lavoro. -
Visualizzare gli eventi di sistema delle istanze dell'esecuzione del lavoro.
- Per visualizzare gli eventi di un'istanza specifica dell'esecuzione del lavoro, utilizzare il comando
ibmcloud ce jobrun events --instance INSTANCE_NAME; ad esempio,
ibmcloud ce jobrun events --instance myjobrun-4-0 ``` Output di esempio ```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 ``` * Per visualizzare gli eventi di tutte le istanze di esecuzione del lavoro, utilizzare il comando [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events) ; ad esempio, ```txt {: pre} ibmcloud ce jobrun events --jobrun myjobrun ``` Output di esempio ```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 ``` - Per visualizzare gli eventi di un'istanza specifica dell'esecuzione del lavoro, utilizzare il comando
Capire perché gli indici di esecuzione dei lavori possono fallire
Quando gli indici di esecuzione dei lavori non funzionano nella console, è possibile cercare gli errori e i motivi per risolvere i problemi, correggere i problemi ed eseguire nuovamente gli indici di esecuzione dei lavori.
Per gestire i lavori e le esecuzioni dei lavori dall'Code Engine Pagina dei progetti, fare clic sul nome del progetto nell'elenco dei progetti, quindi fare
clic su " Offerte di lavoro". Nella scheda " Esecuzioni del processo ", è possibile visualizzare le istanze di esecuzione del processo. Le esecuzioni dei lavori incomplete vengono visualizzate
come “ Failed (<error>) ” nella colonna “Stato ”. La tabella seguente illustra gli errori comuni dell'indice di esecuzione del lavoro e le azioni da intraprendere:
| Errore | Spiegazione | Azione suggerita dall'utente |
|---|---|---|
ContainerExitedCode |
Un errore che include un codice di uscita fornito dal carico di lavoro dell'utente. | Determinare il motivo del codice di uscita all'interno dell'applicazione ed eseguirne il debug. |
ExceededEphemeralStorage |
L'istanza ha allocato più memoria effimera nel suo contenitore di quanto consentito. | Aumentare l'archiviazione effimera della risorsa. |
ExecutableNotFound |
Impossibile trovare il file eseguibile specificato all'interno del contenitore. Il contenitore non può avviarsi senza di esso. | Verificare che il punto di ingresso specificato nell'immagine del contenitore sia corretto e che l'eseguibile esista nell'immagine. |
MaxExecutionTimeExceeded |
L'esecuzione del lavoro non è stata completata entro il tempo massimo di esecuzione. Se erano in esecuzione più istanze, tutte le istanze non ancora completate mostrano questo errore. | Aumentare il valore del timeout di esecuzione del lavoro. |
OOMKilled |
Un errore di memoria insufficiente. L'istanza ha superato il limite di memoria allocato. | Aumentare la CPU e la memoria della risorsa. |
Dopo aver risolto gli errori, fare clic su Esegui indici non riusciti per eseguire nuovamente il lavoro per gli indici non riusciti.
Verifica del riferimento dell'immagine del contenitore per il mio lavoro
Quando lavori con i lavori Code Engine, devi specificare un riferimento all'immagine del contenitore e un segreto di registro per accedere all'immagine. Affinché il job funzioni correttamente, il riferimento dell'immagine e le relative proprietà di accesso devono restare validi per la durata del job.