Cron tarefas bloqueiam tarefas de outros grupos

Este artigo fornece uma solução para o problema de infraestrutura em nuvem do Adobe Commerce relacionado a determinados trabalhos cron de longa duração que bloqueiam outros trabalhos cron.

Produtos e versões afetados

  • Arquitetura do plano Pro da infraestrutura em nuvem do Adobe Commerce
  • Integrado antes de maio de 2019

Problema

No Adobe Commerce para nuvem, quando você tem tarefas cron complexas (tarefas de longa duração), elas podem bloquear outras tarefas para execução. Por exemplo, a tarefa dos indexadores reindexa os indexadores invalidados. Pode levar algumas horas para ser concluído e bloqueará outros trabalhos cron padrão, como enviar emails, gerar mapas de site, notificações de clientes e outras tarefas personalizadas.

Sintomas:

Os processos executados pelos trabalhos cron não são executados. Por exemplo, as atualizações de produtos não são aplicadas por horas ou os clientes relatam não receber emails.

Ao abrir a variável cron_schedule tabela de banco de dados, você verá os jobs com missed status.

Causa

Anteriormente, em nosso ambiente de nuvem, o servidor Jenkins era usado para executar trabalhos cron. O Jenkins executará apenas uma instância de um trabalho por vez; consequentemente, haverá apenas uma bin/magento cron:run processo em execução de cada vez.

Solução

  1. Contato Suporte ao Adobe Commerce para ter os crons autogerenciados habilitados.

  2. Edite o .magento.app.yaml no diretório raiz do código do Adobe Commerce na ramificação Git. Adicione o seguinte:

    code language-yaml
      crons:
      cronrun:
      spec: "* * * * *"
      cmd: "php bin/magento cron:run"
    
  3. Salve o arquivo e envie as atualizações para os ambientes de preparo e produção (da mesma forma que faz para os ambientes de integração).

NOTE
Não há necessidade de transferir configurações cron antigas onde vários cron:run estão presentes no novo cronograma cron; o cronograma regular cron:run tarefa, adicionada conforme descrito acima, é suficiente. No entanto, é necessário transferir seus trabalhos personalizados, se você tiver algum.

Verifique se você tem o cron gerenciado automaticamente habilitado (somente para Preparo e Produção do Cloud Pro)

Para verificar se o cron autogerenciado está ativado, execute o crontab -l e observe o resultado:

  • O cron autogerenciado será ativado se você conseguir ver as tarefas, como as seguintes:

    code language-bash
    username@hostname:~$ crontab -l    # Crontab is managed by the system, attempts to edit it directly will fail.
    SHELL=/etc/platform/username/cron-run    MAILTO=""    # m h dom mon dow job_name    * * * * * cronrun
    
  • O cron autogerenciado não é ativado se você não puder ver as tarefas e obter o "você não tem permissão para usar este programa" mensagem de erro.

NOTE
O comando mencionado acima para verificar se o cron autogerenciado está habilitado não se aplica a um plano inicial e no ambiente de desenvolvimento/integração.

Leitura relacionada

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a