Dimensionnement du pool
scaling.minWorkers et scaling.maxWorkers. La durée moyenne par unité part de scaling.defaultUnitSeconds, puis s’ajuste aux durées mesurées à mesure que les unités se terminent. Par exemple, 80 unités en file d’attente à 30 secondes chacune, avec un objectif de 120 secondes, nécessitent 20 unités de traitement supplémentaires.
Le pool s’agrandit dès que la file d’attente l’exige, mais ne se réduit que lorsque la file d’attente a requis moins d’unités de traitement pendant scaling.scaleDownCooldownMs.
Ne mettez pas vous-même à l’échelle le Deployment des unités de traitement et n’y joignez pas de HorizontalPodAutoscaler : l’orchestrateur rétablit le nombre de réplicas lors de sa vérification suivante.
Capacité
Chaque unité de traitement demandeworker.resources.requests, soit 1 vCPU et 1 Go par défaut, et traite une seule unité à la fois. Pour augmenter le débit, augmentez maxWorkers plutôt que d’allouer davantage de CPU aux unités de traitement.
L’orchestrateur se contente de créer des pods : le cluster doit donc disposer d’un autoscaler de nœuds pour ajouter les nœuds nécessaires à leur exécution. Avant de porter maxWorkers à plusieurs centaines, vérifiez le quota de CPU de votre fournisseur cloud ainsi que les limites du cluster.
Le chart définit des requêtes de ressources, mais aucune limite. Si des unités de traitement sont évincées en raison d’une saturation de la mémoire sur des pages volumineuses ou en haute résolution, augmentez worker.resources.requests.memory.
Démarrages à froid
AvecminWorkers: 0, la première tâche qui suit une période d’inactivité doit attendre qu’une unité de traitement soit planifiée, télécharge son image et démarre. Définissez minWorkers pour conserver des unités de traitement prêtes à l’emploi. Pour absorber plus rapidement les pics de charge sur de nouveaux nœuds, voir Pré-téléchargement de l’image de l’unité de traitement.
Taille des unités et baux
Un PDF de plus deingest.pageSplitThreshold pages (25) est divisé en parties de ce nombre de pages, chaque partie constituant une unité de travail. Des unités plus petites permettent de répartir un document volumineux sur davantage d’unités de traitement.
Une unité de traitement doit terminer une unité dans le délai défini par orchestrator.workLeaseSeconds (300). Passé ce délai, l’unité est confiée à une autre unité de traitement et, au bout de orchestrator.workMaxAttempts (3) tentatives, la tâche échoue avec le statut timed-out. Veillez à ce que la durée du bail reste supérieure au temps de traitement de votre unité la plus lente, ou abaissez le seuil de division.
Ingest et l’orchestrateur
Ingest exécuteingest.replicas pods. Augmentez cette valeur si les téléversements ou la division des PDF occupent ingest en permanence. L’orchestrateur s’exécute toujours avec un seul réplica.