Taken uitsnijden vergrendelen taken uit andere groepen
Dit artikel biedt een oplossing voor het Adobe Commerce-probleem met de cloudinfrastructuur, dat verband houdt met bepaalde lange-termijntaken voor cron die andere cron-taken blokkeren.
Betrokken producten en versies
- Adobe Commerce on cloud Infrastructure Pro-planarchitectuur
- Aan boord vóór mei 2019
Probleem
In Adobe Commerce for Cloud kunnen andere uitvoeringstaken worden vergrendeld wanneer u complexe uitsnijdtaken hebt (taken op lange termijn). De taak van indexeerders herstelt bijvoorbeeld de ongeldig gemaakte indexen. Het kan een paar uur duren om te voltooien en het zal andere standaardtaken vergrendelen, zoals het verzenden van e-mails, het genereren van sitemaps, klantmeldingen en andere aangepaste taken.
Symptomen :
De processen die worden uitgevoerd door snijtaken worden niet uitgevoerd. Productupdates worden bijvoorbeeld niet gedurende uren toegepast of klanten melden geen e-mails te ontvangen.
Wanneer u de databasetabel cron_schedule
opent, ziet u de taken met de status missed
.
Oorzaak
Eerder, in onze wolkenomgeving, werd de server Jenkins gebruikt om bouwbanen in werking te stellen. Jenkins voert slechts één instantie van een taak tegelijk uit. Er wordt dus slechts één bin/magento cron:run
-proces tegelijk uitgevoerd.
Oplossing
-
De steun van Adobe Commerce van het contact 🔗 om zelf-geleide toegelaten kronen te hebben.
-
Bewerk het
.magento.app.yaml
-bestand in de hoofdmap van de code voor Adobe Commerce in de Git-vertakking. Voeg het volgende toe:code language-yaml crons: cronrun: spec: "* * * * *" cmd: "php bin/magento cron:run"
-
Sla het bestand op en druk updates naar de omgevingen voor Staging en Productie (net als bij Integratieomgevingen).
cron:run
aanwezig zijn in het nieuwe uitsnijdschema. De normale cron:run
-taak, toegevoegd zoals hierboven beschreven, is voldoende. Het is echter wel verplicht om aangepaste taken over te dragen als u die hebt.Controleren of de functie voor zelfbeheerd uitsnijden is ingeschakeld (alleen voor Staging en productie in Cloud Pro)
Als u wilt controleren of de zelfbeheerde uitsnede is ingeschakeld, voert u de opdracht crontab -l
uit en bekijkt u het resultaat:
-
Zelf-geleid kruin wordt toegelaten, als u de taken, als het volgende kunt zien:
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
-
De zelf-beheerde krong wordt niet toegelaten als u niet de taken kunt zien en "krijgt u niet toegestaan om dit programma"te gebruiken foutenmelding.
Gerelateerde lezing
- de banen van de opstelling cronin onze ontwikkelaarsdocumentatie.