So wird die Größe des Pools bestimmt
scaling.minWorkers und scaling.maxWorkers. Die durchschnittliche Zeit pro Einheit beginnt bei scaling.defaultUnitSeconds und richtet sich nach den gemessenen Zeiten, sobald Einheiten abgeschlossen werden. Beispiel: 80 Einheiten in der Warteschlange mit je 30 Sekunden ergeben bei einem Zielwert von 120 Sekunden einen Bedarf von 20 zusätzlichen Workern.
Der Pool wächst, sobald die Warteschlange es erfordert, und schrumpft erst, wenn die Warteschlange über den Zeitraum scaling.scaleDownCooldownMs hinweg weniger Worker erfordert hat.
Skalieren Sie das Worker-Deployment nicht selbst und hängen Sie keinen HorizontalPodAutoscaler daran an. Der Orchestrator setzt die Anzahl der Replikate bei seiner nächsten Prüfung zurück.
Kapazität
Jeder Worker fordertworker.resources.requests an – standardmäßig 1 vCPU und 1 GB – und verarbeitet jeweils eine Einheit. Steigern Sie den Durchsatz, indem Sie maxWorkers erhöhen, statt den Workern mehr CPU zuzuweisen.
Der Orchestrator erstellt lediglich pods. Der Cluster benötigt daher einen Knoten-Autoscaler, der die erforderlichen Knoten hinzufügt. Bevor Sie maxWorkers auf mehrere Hundert erhöhen, prüfen Sie sowohl das CPU-Kontingent Ihrer Cloud als auch die Limits des Clusters.
Das chart legt Requests fest, jedoch keine Limits. Wenn Worker bei großen oder hochauflösenden Seiten wegen Arbeitsspeicherknappheit verdrängt werden, erhöhen Sie worker.resources.requests.memory.
Kaltstarts
BeiminWorkers: 0 muss der erste Job nach einer Leerlaufphase warten, bis ein Worker eingeplant wurde, sein Image abgerufen hat und gestartet ist. Legen Sie minWorkers fest, um Worker einsatzbereit zu halten. Wie Sie Lastspitzen auf neuen Knoten schneller abarbeiten, erfahren Sie unter Vorab-Abruf des Worker-Images.
Einheitengröße und Leases
Ein PDF mit mehr alsingest.pageSplitThreshold Seiten (25) wird in Teile mit jeweils dieser Seitenzahl aufgeteilt; jeder Teil bildet eine Arbeitseinheit. Je kleiner die Einheiten, desto mehr Worker teilen sich die Verarbeitung eines großen Dokuments.
Ein Worker muss eine Einheit innerhalb von orchestrator.workLeaseSeconds (300) Sekunden abschließen. Andernfalls wird die Einheit einem anderen Worker zugewiesen, und nach orchestrator.workMaxAttempts (3) Versuchen schlägt der Job mit timed-out fehl. Wählen Sie die Lease-Dauer länger als die Verarbeitungszeit Ihrer langsamsten Einheit, oder senken Sie den Schwellenwert für die Aufteilung.
Ingest-Komponente und Orchestrator
Die Ingest-Komponente läuft iningest.replicas pods. Erhöhen Sie diesen Wert, wenn das Hochladen oder die Aufteilung von PDFs die Ingest-Komponente dauerhaft auslastet. Der Orchestrator läuft immer als einzelnes Replikat.