> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Scalabilité

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

```text theme={null}
workers = busy + ceil(queued units × average unit time / minimumThroughputSeconds)
```

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`.

| Valeur | Par défaut | Effet |
| - | - | - |
| `scaling.minWorkers` | `0` | Nombre d’unités de traitement maintenues actives lorsque la file d’attente est vide. |
| `scaling.maxWorkers` | `20` | Nombre maximal d’unités de traitement exécutées par le pool. |
| `scaling.minimumThroughputSeconds` | `120` | Délai dans lequel le travail en file d’attente doit disposer de capacité. Une valeur plus faible démarre davantage d’unités de traitement plus tôt. |
| `scaling.defaultUnitSeconds` | `30` | Estimation initiale de la durée de traitement d’une unité. |
| `scaling.tickMs` | `15000` | Fréquence de vérification de la taille du pool. |
| `scaling.scaleDownCooldownMs` | `300000` | Durée pendant laquelle la file d’attente doit requérir moins d’unités de traitement avant que le pool ne se réduise. |

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](https://docs.abbyy.com/fr/fine-parser/enterprise/best-practices/scheduling.md#pre-pulling-the-worker-image).

## 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.
