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.

  1. Utilizzare il comando ibmcloud ce jobrun list per elencare tutte le esecuzioni di job definite; ad esempio,

    ibmcloud ce jobrun list
    
  2. Utilizzare il comando ibmcloud ce jobrun get per ottenere i dettagli dell'esecuzione del lavoro, incluso il nome delle istanze per l'esecuzione del lavoro; ad esempio,

    ibmcloud ce jobrun get --name myjobrun
    

    Output 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         29m
    

    Se si desidera ottenere dettagli più dettagliati sull'esecuzione del lavoro, utilizzare l'opzione --o yaml con il comando jobrun 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.

  3. Visualizzare i log delle istanze dell'esecuzione del lavoro.

        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 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.

  1. Utilizzare il comando ibmcloud ce jobrun list per elencare tutte le esecuzioni di job definite; ad esempio,

    ibmcloud ce jobrun list
    
  2. Utilizzare il comando ibmcloud ce jobrun get per ottenere i dettagli dell'esecuzione del lavoro, incluso il nome delle istanze dell'esecuzione del lavoro; ad esempio,

    ibmcloud ce jobrun get --name myjobrun
    

    Output 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         29m
    

    Se si desidera ottenere dettagli più dettagliati sull'esecuzione del lavoro, utilizzare l'opzione --o yaml con il comando jobrun 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.

  3. Visualizzare gli eventi di sistema delle istanze dell'esecuzione del lavoro.

        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
        ```
    

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 e motivi per gli indici di esecuzione del lavoro non riusciti
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.

Vedi Come posso verificare la mia immagine di riferimento?