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 tabela de banco de dados cron_schedule, você verá os trabalhos com o status missed.

Causa

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

Solução

  1. Contate o suporte da Adobe Commerce para habilitar os crons autogerenciados.

  2. Edite o arquivo .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 em que vários cron:run estão presentes para o novo cronograma cron. A tarefa cron:run normal, 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á habilitado, execute o comando 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 é habilitado se você não puder ver as tarefas e obter a mensagem de erro "você não tem permissão para usar este programa".

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