Cron tarefas bloqueiam tarefas de outros grupos

Este artigo fornece uma solução para o problema de infraestrutura na 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 complexas cron (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 padrão do cron, como enviar emails, gerar mapas de site, notificações de clientes e outras tarefas personalizadas.

Sintomas:

Os processos executados por cron trabalhos 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 cron trabalhos. 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 o crons gerenciado automaticamente.

  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 onde vários cron:run estão presentes para o novo agendamento cron; a tarefa cron:run regular, adicionada conforme descrito acima, é suficiente. No entanto, é necessário transferir seus trabalhos personalizados, se você tiver algum.

Verifique se você tem o cron autogerenciado 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:

  • Autogerenciado cron está habilitado, se você puder 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