Fouten in Azure Batch-pool en -knooppunten
Sommige bewerkingen voor het maken en beheren van Azure Batch-pools worden onmiddellijk uitgevoerd. Het detecteren van fouten voor deze bewerkingen is eenvoudig, omdat fouten meestal direct worden geretourneerd vanuit de API, de opdrachtregel of de gebruikersinterface. Sommige bewerkingen zijn echter asynchroon, worden uitgevoerd op de achtergrond en nemen enkele minuten in beslag. In dit artikel worden manieren beschreven om fouten te detecteren en te voorkomen die kunnen optreden in de achtergrondbewerkingen voor pools en knooppunten.
Zorg ervoor dat u uw toepassingen instelt om uitgebreide foutcontrole te implementeren, met name voor asynchrone bewerkingen. Uitgebreide foutcontrole kan u helpen bij het snel identificeren en diagnosticeren van problemen.
Poolfouten
Poolfouten kunnen betrekking hebben op het wijzigen van de grootte van time-outs of fouten bij het wijzigen van de grootte, het automatisch schalen of het verwijderen van pools.
Formaat time-out wijzigen of fout
Wanneer u een nieuwe pool maakt of het formaat van een bestaande pool wijzigt, geeft u het doelaantal knooppunten op. De bewerking voor het maken of wijzigen van het formaat wordt onmiddellijk voltooid, maar de werkelijke toewijzing van nieuwe knooppunten of het verwijderen van bestaande knooppunten kan enkele minuten duren. U kunt de time-out voor het wijzigen van de grootte opgeven in de pool - Toevoegen of Pool - API's wijzigen . Als Batch het doelaantal knooppunten niet kan toewijzen tijdens de time-outperiode voor het wijzigen van de grootte, wordt de pool in een stabiele status gebracht en wordt het formaat van fouten gerapporteerd.
De eigenschap resizeError bevat de fouten die zijn opgetreden voor de meest recente evaluatie.
Veelvoorkomende oorzaken voor het wijzigen van groottefouten zijn:
Time-out te kort wijzigen. Meestal is de standaardtime-out van 15 minuten lang genoeg om poolknooppunten toe te wijzen of te verwijderen. Als u een groot aantal knooppunten toewijst, zoals meer dan 1000 knooppunten uit een Azure Marketplace-installatiekopieën, of meer dan 300 knooppunten van een aangepaste VM-installatiekopieën (virtuele machine), kunt u de time-out voor het wijzigen van de grootte instellen op 30 minuten.
Onvoldoende kernquotum. Een Batch-account is beperkt in het aantal kernen dat het kan toewijzen aan alle pools en stopt met het toewijzen van knooppunten zodra dit quotum is bereikt. U kunt het kernquotum verhogen, zodat Batch meer knooppunten kan toewijzen. Zie Quota en limieten voor Batch-services voor meer informatie.
Onvoldoende ip-adressen van subnetten wanneer een groep zich in een virtueel netwerk bevindt. Een subnet van een virtueel netwerk moet voldoende IP-adressen hebben om toe te wijzen aan elk aangevraagd poolknooppunt. Anders kunnen de knooppunten niet worden gemaakt. Zie Een Azure Batch-pool maken in een virtueel netwerk voor meer informatie.
Onvoldoende resources wanneer een pool zich in een virtueel netwerk bevindt. Wanneer u een pool in een virtueel netwerk maakt, kunt u resources zoals load balancers, openbare IP-adressen en netwerkbeveiligingsgroepen (NSG's) maken in hetzelfde abonnement als het Batch-account. Zorg ervoor dat de abonnementsquota voldoende zijn voor deze resources.
Grote pools met aangepaste VM-installatiekopieën. Grote pools die gebruikmaken van aangepaste VM-installatiekopieën kunnen langer duren om toe te wijzen en de grootte van time-outs kan optreden. Zie Een pool maken met de Azure Compute Gallery voor aanbevelingen over limieten en configuratie.
Fouten bij automatisch schalen
U kunt Azure Batch instellen om het aantal knooppunten in een pool automatisch te schalen en u definieert de parameters voor de formule voor automatisch schalen voor de pool. De Batch-service gebruikt vervolgens de formule om het aantal knooppunten in de pool periodiek te evalueren en nieuwe doelnummers in te stellen. Zie Een automatische formule maken voor het schalen van rekenknooppunten in een Batch-pool voor meer informatie.
De volgende problemen kunnen optreden wanneer u automatisch schalen gebruikt:
- De evaluatie van automatisch schalen mislukt.
- De resulterende bewerking voor het wijzigen van de grootte mislukt en er treedt een time-out op.
- Een probleem met de formule voor automatisch schalen leidt tot onjuiste doelwaarden voor knooppunten. Het formaat kan werken of een time-out hebben.
Gebruik de eigenschap AutoScaleRun om informatie over de laatste evaluatie van automatische schaalaanpassing op te halen. Deze eigenschap rapporteert de evaluatietijd, de waarden en het resultaat en eventuele prestatiefouten.
Met de poolgrootte van de volledige gebeurtenis wordt informatie over alle evaluaties vastgelegd.
Fouten bij het verwijderen van pools
Als u een pool met knooppunten wilt verwijderen, verwijdert Batch eerst de knooppunten. Dit kan enkele minuten duren. Batch verwijdert vervolgens het poolobject zelf.
Batch stelt de poolState deleting
in op tijdens het verwijderingsproces. De aanroepende toepassing kan detecteren of het verwijderen van de groep te lang duurt met behulp van de state
en stateTransitionTime
eigenschappen.
Als het verwijderen van de pool langer duurt dan verwacht, probeert Batch periodiek opnieuw totdat de pool is verwijderd. In sommige gevallen is de vertraging het gevolg van een storing in de Azure-service of andere tijdelijke problemen. Voor andere factoren die voorkomen dat het verwijderen van een groep is geslaagd, moet u mogelijk actie ondernemen om het probleem te verhelpen. Deze factoren kunnen de volgende problemen omvatten:
Resourcevergrendelingen kunnen worden geplaatst op door Batch gemaakte resources of op netwerkresources die Door Batch worden gebruikt.
Resources die u hebt gemaakt, zijn mogelijk afhankelijk van een door Batch gemaakte resource. Als u bijvoorbeeld een pool in een virtueel netwerk maakt, maakt Batch een NSG, een openbaar IP-adres en een load balancer. Als u deze resources buiten de pool gebruikt, kunt u de pool niet verwijderen.
De
Microsoft.Batch
resourceprovider kan de registratie ongedaan maken van het abonnement dat uw pool bevat.Voor batch-accounts
Microsoft Azure Batch
in de gebruikersabonnementsmodus is de rol Inzender of Eigenaar mogelijk niet meer beschikbaar voor het abonnement dat uw pool bevat. Zie Batch toegang geven tot het abonnement voor meer informatie.
Knooppuntfouten
Zelfs wanneer Batch knooppunten in een pool toewijst, kunnen verschillende problemen ertoe leiden dat sommige knooppunten niet in orde zijn en taken niet kunnen uitvoeren. Deze knooppunten brengen nog steeds kosten in rekening, dus het is belangrijk om problemen te detecteren om te voorkomen dat u betaalt voor knooppunten die u niet kunt gebruiken. Kennis over veelvoorkomende knooppuntfouten en het weten van de huidige jobState is handig voor het oplossen van problemen.
Taakfouten starten
U kunt een optionele startTask opgeven voor een pool. Net als bij elke taak gebruikt de begintaak een opdrachtregel en kan deze resourcebestanden downloaden uit de opslag. De begintaak wordt uitgevoerd voor elk knooppunt wanneer het knooppunt wordt gestart. De waitForSuccess
eigenschap geeft aan of Batch wacht totdat de begintaak is voltooid voordat taken naar een knooppunt worden gepland. Als u het knooppunt configureert om te wachten op voltooiing van de begintaak, maar de begintaak mislukt, is het knooppunt niet bruikbaar, maar worden er nog steeds kosten in rekening gebracht.
U kunt opstarttaakfouten detecteren met behulp van de eigenschappen taskExecutionResult en taskFailureInformation van de eigenschap startTaskInformation-knooppunt op het hoogste niveau.
Een mislukte begintaak zorgt er ook voor dat Batch de computeNodeState instelt op starttaskfailed
, als waitForSuccess
deze is ingesteld op true
.
Net als bij elke taak kunnen er veel oorzaken zijn voor een mislukte begintaak. Als u problemen wilt oplossen, controleert u de stdout, stderr en andere taakspecifieke logboekbestanden.
Begintaken moeten opnieuw worden ingeschreven, omdat de begintaak meerdere keren op hetzelfde knooppunt kan worden uitgevoerd, bijvoorbeeld wanneer het knooppunt opnieuw wordt geinstallatiekopie of opnieuw wordt opgestart. In zeldzame gevallen, wanneer een begintaak wordt uitgevoerd nadat een gebeurtenis het opnieuw opstarten van een knooppunt veroorzaakt, wordt het ene besturingssysteem (OS) of de tijdelijke schijf opnieuw installatiekopieën uitgevoerd terwijl de andere niet. Omdat Batch taken start en alle Batch-taken worden uitgevoerd vanaf de tijdelijke schijf, is deze situatie meestal geen probleem. In gevallen waarin de starttaak echter een toepassing op de besturingssysteemschijf installeert en andere gegevens op de tijdelijke schijf bewaart, kunnen er synchronisatieproblemen zijn. Beveilig uw toepassing dienovereenkomstig als u beide schijven gebruikt.
Downloadfout toepassingspakket
U kunt een of meer toepassingspakketten opgeven voor een groep. Batch downloadt de opgegeven pakketbestanden naar elk knooppunt en decomprimeert de bestanden nadat het knooppunt is gestart, maar voordat taken worden gepland. Het is gebruikelijk om een begintaakopdracht te gebruiken met toepassingspakketten, bijvoorbeeld om bestanden naar een andere locatie te kopiëren of om setup uit te voeren.
Als een toepassingspakket niet kan worden gedownload encomprimeren, meldt de eigenschap computeNodeError de fout en stelt de knooppuntstatus in op unusable
.
Fout bij downloaden van container
U kunt een of meer containerverwijzingen voor een pool opgeven. Batch downloadt de opgegeven containers naar elk knooppunt. Als de container niet kan worden gedownload, meldt de eigenschap computeNodeError de fout en stelt de knooppuntstatus in op unusable
.
Updates van knooppuntbesturingssystemen
Voor Windows-pools enableAutomaticUpdates
is standaard ingesteld true
op. Hoewel het toestaan van automatische updates wordt aanbevolen, kunnen updates de voortgang van de taak onderbreken, met name als de taken lang duren. U kunt deze waarde false
instellen op als u ervoor moet zorgen dat een update van het besturingssysteem niet onverwacht plaatsvindt.
Knooppunt met onbruikbare status
Batch kan de computeNodeState unusable
om verschillende redenen instellen. U kunt geen taken plannen op een unusable
knooppunt, maar er worden nog steeds kosten in rekening gebracht voor het knooppunt.
Als Batch de oorzaak kan bepalen, rapporteert de eigenschap computeNodeError deze. Als een knooppunt een unusable
status heeft, maar geen computeNodeError heeft, betekent dit dat Batch niet kan communiceren met de virtuele machine. In dit geval probeert Batch altijd de virtuele machine te herstellen. Batch probeert echter niet automatisch VM's te herstellen die toepassingspakketten of containers niet hebben geïnstalleerd, zelfs niet als hun status is unusable
.
Andere redenen voor unusable
knooppunten kunnen de volgende oorzaken bevatten:
- Een aangepaste VM-installatiekopieën zijn ongeldig. De afbeelding is bijvoorbeeld niet goed voorbereid.
- Een VIRTUELE machine wordt verplaatst vanwege een infrastructuurfout of een upgrade op laag niveau. Batch herstelt het knooppunt.
- Er is een VM-installatiekopie geïmplementeerd op hardware die deze niet ondersteunt.
- De VM's bevinden zich in een virtueel Azure-netwerk en verkeer is geblokkeerd voor sleutelpoorten.
- De VM's bevinden zich in een virtueel netwerk, maar uitgaand verkeer naar Azure Storage wordt geblokkeerd.
- De VM's bevinden zich in een virtueel netwerk met een aangepaste DNS-configuratie en de DNS-server kan Azure-opslag niet oplossen.
Logboekbestanden van knooppuntagent
Het Batch-agentproces dat wordt uitgevoerd op elk poolknooppunt biedt logboekbestanden die u kunnen helpen als u contact moet opnemen met ondersteuning over een probleem met een poolknooppunt. U kunt logboekbestanden voor een knooppunt uploaden via De Azure-portal, Batch Explorer of het rekenknooppunt- Batch Service-logboeken-API uploaden . Nadat u de logboekbestanden hebt geüpload en opgeslagen, kunt u het knooppunt of de pool verwijderen om de kosten van het uitvoeren van de knooppunten te besparen.
Knooppuntschijf vol
Batch gebruikt het tijdelijke station op een VM van een knooppuntgroep om bestanden op te slaan, zoals de volgende taakbestanden, taakbestanden en gedeelde bestanden:
- Toepassingspakketbestanden
- Resourcebestanden voor taak
- Toepassingsspecifieke bestanden die zijn gedownload naar een van de Batch-mappen
- Stdout - en stderr-bestanden voor de uitvoering van elke taaktoepassing
- Toepassingsspecifieke uitvoerbestanden
Bestanden zoals toepassingspakketten of taakresourcebestanden worden slechts eenmaal geschreven wanneer Batch het poolknooppunt maakt. Hoewel ze slechts eenmaal schrijven, als deze bestanden te groot zijn, kunnen ze de tijdelijke schijf vullen.
Andere bestanden, zoals stdout en stderr, worden geschreven voor elke taak die door een knooppunt wordt uitgevoerd. Als een groot aantal taken wordt uitgevoerd op hetzelfde knooppunt of als de taakbestanden te groot zijn, kunnen ze het tijdelijke station vullen.
Het knooppunt heeft ook een kleine hoeveelheid ruimte op de besturingssysteemschijf nodig om gebruikers te maken nadat het is gestart.
De grootte van het tijdelijke station is afhankelijk van de VM-grootte. Een overweging bij het kiezen van een VM-grootte is ervoor te zorgen dat het tijdelijke station voldoende ruimte heeft voor de geplande workload.
Wanneer u een pool toevoegt in Azure Portal, kunt u de volledige lijst met VM-grootten weergeven, inclusief een kolom resourceschijfgrootte . De artikelen waarin VM-grootten worden beschreven, bevatten tabellen met een Temp Storage-kolom . Zie VM-grootten voor geoptimaliseerde rekenkracht voor meer informatie. Zie Fsv2-serie voor een voorbeeldtabelgrootte.
U kunt een bewaartijd opgeven voor bestanden die door elke taak zijn geschreven. De bewaartijd bepaalt hoe lang de taakbestanden moeten worden bewaard voordat ze automatisch worden opgeschoond. U kunt de retentietijd verminderen om de opslagvereisten te verlagen.
Als de tijdelijke schijf of besturingssysteemschijf onvoldoende ruimte heeft of bijna geen ruimte meer heeft, wordt het knooppunt verplaatst naar de unusable
computeNoteState en de knooppuntfout zegt dat de schijf vol is.
Als u niet zeker weet wat ruimte in beslag neemt op het knooppunt, probeert u extern verbinding te maken met het knooppunt en probeert u handmatig te onderzoeken. U kunt ook de API File - List From Compute Node gebruiken om bestanden, zoals taakuitvoer, te onderzoeken in door Batch beheerde mappen. Deze API bevat alleen bestanden in de beheerde Batch-mappen. Als uw taken elders bestanden hebben gemaakt, worden deze niet weergegeven met deze API.
Nadat u ervoor hebt gezorgd dat u alle gegevens ophaalt die u nodig hebt van het knooppunt of deze uploadt naar een duurzame opslag, kunt u zo nodig gegevens verwijderen om ruimte vrij te maken.
U kunt oude voltooide taken of taken verwijderen waarvan de taakgegevens zich nog op de knooppunten bevinden. Zoek in de recentTasks
verzameling in de taskInformation op het knooppunt of gebruik de API File - List From Compute Node . Als u een taak verwijdert, worden alle taken in de taak verwijderd. Als u de taken in de taak verwijdert, wordt het verwijderen van gegevens in de taakmappen op de knooppunten geactiveerd en wordt ruimte vrijgemaakt. Zodra u voldoende ruimte hebt vrijgemaakt, start u het knooppunt opnieuw op. Het knooppunt moet uit unusable
de status en weer worden verplaatst idle
.
Als u een onbruikbaar knooppunt in VirtualMachineConfiguration-pools wilt herstellen, kunt u het knooppunt uit de pool verwijderen met behulp van de POOL - Knooppunten-API verwijderen. Vervolgens kunt u de pool opnieuw vergroten om het ongeldige knooppunt te vervangen door een nieuw knooppunt.
Belangrijk
Reimage wordt momenteel niet ondersteund voor VirtualMachineConfiguration-pools .
Volgende stappen
- Meer informatie over taak- en taakfoutcontrole.
- Meer informatie over aanbevolen procedures voor het werken met Azure Batch.