Cron tareas bloquean tareas de otros grupos
Este artículo proporciona una solución para el problema de infraestructura en la nube de Adobe Commerce relacionado con ciertos trabajos de cron de larga duración que bloquean otros cron trabajos.
Productos y versiones afectados
- Arquitectura del plan Pro de Adobe Commerce en la infraestructura en la nube
- Incorporación antes de mayo de 2019
Problema
En Adobe Commerce para la nube, cuando tiene cron tareas complejas (tareas de larga ejecución), podrían bloquear otras tareas para su ejecución. Por ejemplo, la tarea de los indexadores reindexa los indexadores invalidados. Puede tardar unas horas en finalizar y bloqueará otros trabajos predeterminados de cron, como el envío de correos electrónicos, la generación de mapas del sitio, las notificaciones a los clientes y otras tareas personalizadas.
Síntomas:
No se realizan los procesos ejecutados por cron trabajos. Por ejemplo, las actualizaciones de productos no se aplican durante horas o los clientes informan que no reciben correos electrónicos.
Cuando abra la tabla de base de datos cron_schedule
, verá los trabajos con el estado missed
.
Causa
Anteriormente, en nuestro entorno de nube, el servidor Jenkins se usaba para ejecutar cron trabajos. Jenkins solo ejecutará una instancia de trabajo a la vez; en consecuencia, solo se ejecutará un proceso de bin/magento cron:run
a la vez.
Solución
-
Póngase en contacto con el soporte técnico de Adobe Commerce para habilitar crons administrado automáticamente.
-
Edite el archivo
.magento.app.yaml
en el directorio raíz del código para Adobe Commerce en la rama Git. Añada lo siguiente:code language-yaml crons: cronrun: spec: "* * * * *" cmd: "php bin/magento cron:run"
-
Guarde el archivo y las actualizaciones push en los entornos de ensayo y producción (del mismo modo que lo hace para los entornos de integración).
cron:run
presentes en la nueva programación cron; la tarea normal cron:run
, agregada como se ha descrito anteriormente, es suficiente. Sin embargo, es necesario transferir sus trabajos personalizados si tiene alguno.Compruebe si tiene habilitado cron administrado automáticamente (solo para ensayo y producción de Cloud Pro)
Para comprobar si el cron administrado automáticamente está habilitado, ejecute el comando crontab -l
y observe el resultado:
-
cron administrado automáticamente está habilitado si puede ver las tareas como las siguientes:
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
-
El cron autoadministrado no está habilitado si no puede ver las tareas y obtener el mensaje de error "no tiene permiso para usar este programa".
Lectura relacionada
- Configurar cron trabajos en nuestra documentación para desarrolladores
- Prácticas recomendadas para modificar tablas de base de datos en el libro de estrategias de implementación de Commerce