Por que meu app parou de executar?
Depois de implementar um app, ele é executado por um tempo e, em seguida, termina inesperadamente.
Determine se um dos seguintes casos é verdadeiro.
- O seu código do app inclui uma saída quando ele conclui seu ciclo de execução
- Seu código do app contém um erro que está fazendo com que o app termine inesperadamente.
- A imagem da qual seu app está puxando não existe mais porque você a excluiu ou sua Política de Retenção de Imagem no IBM Cloud Container Registry fez com que ela fosse excluída. Por exemplo, seu app está aumentando a capacidade por causa de solicitações recebidas No entanto, o aumento de escala falha porque a imagem não existe mais no Container Registry. Outra situação típica é se o seu app está em um nó do trabalhador que está planejado para receber as correções de segurança mais recentes Se o Code Engine tentar mover seu app para um nó do trabalhador diferente e não puder localizar a imagem, a movimentação falhará e o app parará de funcionar.
- A imagem da qual seu app está puxando não existe mais porque, embora a imagem com a tag fornecida exista, ela foi sobrescrita após a criação de uma revisão do aplicativo. A imagem que está associada a sua revisão de aplicativo específica usa uma compilação de registro de contêiner exclusiva e essa compilação é usada para a vida de sua revisão do aplicativo Se você criar uma versão mais recente da imagem com a mesma tag que a imagem original, a imagem original será sobrescrita no registro do contêiner No entanto, o Code Engine não pode localizar essa imagem mais recente, porque a imagem mais recente possui uma compilação diferente da compilação para a revisão do aplicativo... Nenhuma instância nova do aplicativo pode ser criada e este cenário resulta em uma falha do aplicativo.
Tente as seguintes soluções para resolver seu problema.
-
Os apps Code Engine são projetados para serem executados sem sair. Se o seu código do app incluir uma saída, considere executar seu código como uma tarefa em vez disso.
-
Verifique se há mensagens que possam ajudar a determinar a causa. Se você configurar a criação de log para Code Engine, seus arquivos de log poderão conter mensagens. Para obter mais informações sobre a criação de log, consulte Visualizando logs. Seu app deve seguir a Metodologia do app de 12 fatores Por exemplo, se a estrutura subjacente do Code Engine no qual o seu app está em execução requer uma atualização, uma nova instância do seu app será criada na infraestrutura atualizada. Quando sua nova instância do app é marcada como
Ready, o Code Engine roteia o tráfego para ela Seu aplicativo antigo então recebe uma mensagem doSIGTERM, permitindo que ele seja encerrado com segurança. Se ele não for encerrado, o Code Engine enviará uma mensagem doSIGKILLe sua instância de app antiga será destruída, o que pode fazer com que os dados sejam perdidos.. -
Recriar a imagem no Container Registry e, em seguida, implementar outra instância de seu app. Em seguida, verifique sua política de retenção de imagens em Container Registry para que as imagens que são usadas por revisões ativas não sejam excluídas. Se você estiver usando modelos de cadeia de ferramentas para Code Engine, também será possível incluir lógica em sua definição de pipeline para excluir versões não usadas de sua imagem somente após uma versão ativa ser implementada.
-
Crie uma nova revisão para seu app atualizando seu aplicativo. Se uma imagem for enviada por push com a mesma tag, deve-se atualizar seu aplicativo para criar uma nova revisão que use essa imagem atualizada