Passer au contenu principal
L’orchestrateur dimensionne le pool d’unités de traitement en fonction de la file d’attente. C’est vous qui en fixez les limites et la réactivité.

Dimensionnement du pool

borné entre 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 demande worker.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

Avec minWorkers: 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 de ingest.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écute ingest.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.