So behandelt Ollama parallele Anfragen
Verstehen Sie Ollama-Konkurrenz, Warteschlangen und die Optimierung von OLLAMA_NUM_PARALLEL für stabile parallele Anfragen.
Dieses руководство erklärt, wie Ollama parallele Anfragen verarbeitet (Konnektivität, Warteschlangen und Ressourcenlimits) und wie man dies über die Umgebungsvariable OLLAMA_NUM_PARALLEL (und verwandte Parameter) einstellt.
Direktlinks: Was ist OLLAMA_NUM_PARALLEL? · Schnelle Tune-Up-Rezepte · Wie das Queuing funktioniert · Fehlerbehebung · Verwandt: Ollama CLI Befehle Spickzettel
Für weitere Informationen zu Durchsatz, Latenz, VRAM und Benchmarks über verschiedene Laufzeitumgebungen und Hardware hinweg, siehe LLM Performance: Benchmarks, Engpässe & Optimierung.
Multi-Step-Agenten vermehren Retries, wenn das Sampling instabil ist; für Standardeinstellungen von Temperature, top_p und Strafen bei Modellen der Qwen- und Gemma-Klasse, siehe Agentische Inferenzparameter für Qwen und Gemma.

Verarbeitung paralleler Anfragen
-
Parallele Verarbeitung: Ollama unterstützt die parallele Verarbeitung von Anfragen. Wenn das System über ausreichend verfügbaren Speicher verfügt (RAM für CPU-Inferenz, VRAM für GPU-Inferenz), können mehrere Modelle gleichzeitig geladen werden, und jedes geladene Modell kann mehrere Anfragen parallel bearbeiten. Dies wird durch die Umgebungsvariable
OLLAMA_NUM_PARALLELgesteuert, die die maximale Anzahl paralleler Anfragen definiert, die jedes Modell gleichzeitig verarbeiten kann. Standardmäßig ist dieser Wert auf 4 gesetzt (oder auf 1, abhängig von der Speichererhältlichkeit), kann aber angepasst werden. -
Batching: Wenn mehrere Anfragen für dasselbe Modell gleichzeitig eintreffen, fasst Ollama diese zu einem Batch zusammen und verarbeitet sie gemeinsam. Das bedeutet, dass beide Anfragen parallel bearbeitet werden und Nutzer die Antworten gleichzeitig gestreamt erhalten. Der Server wartet nicht absichtlich darauf, einen Batch zu füllen; die Verarbeitung beginnt, sobald Anfragen verfügbar sind.
Queuing und Limits
-
Queuing: Wenn die Anzahl gleichzeitiger Anfragen das konfigurierte Parallelitätsniveau überschreitet (z. B. mehr als
OLLAMA_NUM_PARALLELAnfragen für ein Modell), werden zusätzliche Anfragen in eine Warteschlange gestellt. Die Warteschlange arbeitet nach dem First-In-First-Out-Prinzip (FIFO). -
Warteschlangenlimits: Die maximale Anzahl gequeuter Anfragen wird durch
OLLAMA_MAX_QUEUEgesteuert (Standard: 512). Wenn die Warteschlange voll ist, erhalten neue Anfragen einen 503-Fehler, der anzeigt, dass der Server überlastet ist. -
Modell-Laden: Die Anzahl der verschiedenen Modelle, die gleichzeitig geladen werden können, wird durch
OLLAMA_MAX_LOADED_MODELSgesteuert. Wenn eine Anfrage das Laden eines neuen Modells erfordert und der Speicher unzureichend ist, wird Ollama inaktive Modelle entladen, um Platz zu schaffen, und die Anfrage wird in die Warteschlange gestellt, bis das Modell geladen ist.
Beispielszenario
Wenn zwei Anfragen für dasselbe Modell zur gleichen Zeit eintreffen und die Parallelität des Servers auf mindestens 2 gesetzt ist, werden beide Anfragen in einem Batch zusammen verarbeitet, und beide Nutzer erhalten Antworten gleichzeitig. Wenn die Parallelität auf 1 gesetzt ist, wird eine Anfrage sofort verarbeitet und die andere in die Warteschlange gestellt, bis die erste abgeschlossen ist.
Wenn die verschiedenen Modelle betreffen und genügend Speicher vorhanden ist, können beide Modelle geladen und die Anfragen parallel bearbeitet werden. Wenn nicht, muss möglicherweise ein Modell entladen werden, und die Anfrage wird in die Warteschlange gestellt.
Zusammenfassungstabelle
| Szenario | Ergebnis |
|---|---|
| Zwei Anfragen, gleiches Modell, genügend Parallelität | Beide parallel zusammen verarbeitet (gebatcht) |
| Zwei Anfragen, gleiches Modell, Parallelität=1 | Eine verarbeitet, zweite in Warteschlange bis die erste abgeschlossen ist |
| Zwei Anfragen, verschiedene Modelle, genügend Speicher | Beide Modelle geladen, Anfragen parallel bearbeitet |
| Zwei Anfragen, verschiedene Modelle, nicht genügend Speicher | Eine in Warteschlange, bis Speicher verfügbar ist oder ein Modell entladen wird |
Zusammenfassend ist Ollama so konzipiert, dass es mehrere gleichzeitige Anfragen effizient verarbeitet, vorausgesetzt, der Server ist für Konnektivität konfiguriert und über ausreichende Ressourcen verfügt. Andernfalls werden die Anfragen in eine Warteschlange gestellt und der Reihe nach verarbeitet.
Wenn das Erhöhen von OLLAMA_NUM_PARALLEL die Latenz nicht mehr stabil hält und die Warteschlange unter echtem Verkehr weiter wächst, ist dies eines der klareren Signale, die für einen Wechsel zu einem spezialisierten Serving-Engine abgewogen werden sollten. Ollama zu vLLM: Wann Sie Ihren lokalen LLM-Server migrieren sollten beleuchtet diese Entscheidung, einschließlich Continuous Batching und PagedAttention als Mechanismen, die vLLM verwendet, um sicherzustellen, dass sich parallele Anfragen nicht gegenseitig verschlechtern.
Umgang mit unzureichendem Speicher
Wenn Ollama unzureichenden Speicher zur Bearbeitung eingehender Anfragen feststellt, wendet es eine Kombination aus Queuing-Mechanismen und Ressourcenmanagement-Strategien an, um die Stabilität zu gewährleisten:
Anfragen-Queuing
- Neue Anfragen werden in eine FIFO- (First-In, First-Out-)Warteschlange gestellt, wenn Speicher nicht sofort allokiert werden kann.
- Die Größe der Warteschlange wird durch OLLAMA_MAX_QUEUE gesteuert (Standard: 512 Anfragen).
- Wenn die Warteschlange die Kapazität erreicht, erhalten neue Anfragen 503 “Server Überlastet” Fehler.
Modellverwaltung
- Aktive Modelle können aus dem Speicher entladen werden, wenn sie inaktiv werden, um Ressourcen für gequeute Anfragen freizugeben.
- Die Anzahl gleichzeitig geladener Modelle ist durch OLLAMA_MAX_LOADED_MODELS begrenzt (Standard: 3×GPU-Anzahl oder 3 für CPU).
Speicheroptimierung
- Versuche, Anfragen für dasselbe Modell zu batchen, um die Speichereffizienz zu maximieren.
- Für GPU-Inferenz wird eine vollständige VRAM-Allokierung pro Modell benötigt - teilweise Laden wird nicht unterstützt.
Fehlszenarien
Kritischer Speicherausschöpfung: Wenn selbst gequeute Anfragen die verfügbaren Ressourcen überschreiten, kann Ollama:
- Auf Disk paginieren (Leistungsabfall drastisch)
- “Speicher ausgegangen” Fehler zurückgeben
- In extremen Fällen die Modellinstanz abstürzen lassen
| Konfigurationssteuerung Einstellung | Zweck | Standardwert |
|---|---|---|
| OLLAMA_MAX_QUEUE | Maximale gequeute Anfragen | 512 |
| OLLAMA_NUM_PARALLEL | Parallele Anfragen pro geladenem Modell | 4 (oder 1, wenn begrenzt) |
| OLLAMA_MAX_LOADED_MODELS | Maximale gleichzeitig geladene Modelle | 3×GPU-Anzahl oder 3 |
Administratoren sollten die Speichernutzung überwachen und diese Parameter basierend auf ihren Hardware-Fähigkeiten anpassen. Der Umgang mit unzureichendem Speicher wird entscheidend, wenn größere Modelle (7B+ Parameter) ausgeführt oder mehrere parallele Anfragen verarbeitet werden.
Ollama-Optimierungsstrategien
Aktivieren Sie die GPU-Beschleunigung mit export OLLAMA_CUDA=1 und setzen Sie CPU-Threads mit export OLLAMA_NUM_THREADS=84. Hardware-Upgrades
- RAM: 32GB+ für 13B-Modelle, 64GB+ für 70B-Modelle
- Speicher: NVMe SSDs für schnelleres Laden/Swappen von Modellen
- GPU: NVIDIA RTX 3080/4090 mit 16GB+ VRAM für größere Modelle
Operative Strategien
- Anfragen bündeln: Verarbeiten Sie mehrere Abfragen gleichzeitig, um die Speicher-Overhead zu amortisieren
- Automatische Modell-Entladung: Ermöglicht es Ollama, inaktive Modelle aus dem Speicher zu entfernen
- Häufig verwendete Modelle cachen: Halten Sie gängige Modelle im Speicher
Überwachung & Fehlerbehebung
- Verwenden Sie nvidia-smi (GPU) und htop (CPU/RAM), um Engpässe zu identifizieren
- Bei Speicherfehlern:
- Wechsel zu quantisierten Modellen
- Reduzierung paralleler Anfragen
- Erhöhung des Swap-Bereichs
Beispiel-Optimierungsworkflow:
### Quantisiertes Modell mit GPU-Beschleunigung verwenden
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048
### Geladene Modelle und parallele Anfragen begrenzen
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4
Diese Anpassungen können den Speicherverbrauch um 30-60 % reduzieren, während die Antwortqualität erhalten bleibt, was insbesondere nützlich ist, wenn mehrere Modelle ausgeführt oder ein hohes Anfragesvolumen bearbeitet wird.
Umgebungsvariable OLLAMA_NUM_PARALLEL
OLLAMA_NUM_PARALLEL steuert, wie viele Anfragen Ollama parallel ausführt. Wenn Sie mehrere Anfragen an denselben Ollama-Server senden, bestimmt diese Einstellung weitgehend, ob sie parallel ablaufen oder in einer Warteschlange enden.
- Höhere Werte können den Durchsatz erhöhen, wenn Sie ausreichend CPU/GPU/VRAM haben, können aber Latenz und Speicherdruck erhöhen.
- Niedrigere Werte reduzieren Konkurrenz und können die Stabilität verbessern, aber Anfragen werden häufiger in die Warteschlange gestellt.
Speicher skaliert spezifisch mit OLLAMA_NUM_PARALLEL * OLLAMA_CONTEXT_LENGTH: vier parallele Slots bei einer 32K-Kontexteinstellung reservieren KV-Cache, als wäre eine einzelne 128K-Sequenz geladen, noch bevor eine Anfrage sie verwendet. Auf einer 16-GB-GPU ist diese Budgetberechnung oft wichtiger als das Queuing-Verhalten — siehe KV Cache auf 16-GB-GPUs für das vollständige VRAM-Budget und warum OLLAMA_NUM_PARALLEL=1 normalerweise der richtige Ausgangspunkt für eine einzelne Long-Context-Session ist.
So setzen Sie OLLAMA_NUM_PARALLEL
Linux / macOS (systemd-Dienst oder Shell):
export OLLAMA_NUM_PARALLEL=2
ollama serve
Einmalige Ausführung (Präfix nur für diesen Befehl):
OLLAMA_NUM_PARALLEL=2 ollama serve
Docker (Beispiel):
docker run --rm -e OLLAMA_NUM_PARALLEL=2 -p 11434:11434 ollama/ollama
So wählen Sie einen Wert
Beginnen Sie mit 1–2 für eine einzelne GPU / begrenztes VRAM, und erhöhen Sie sie schrittweise, während Sie überwachen:
- GPU-VRAM-Nutzung (OOM / Eviction)
- CPU-Nutzung und Load Average
- p95-Latenz Ihrer typischen Anfragen
- Fehlerquote / Timeouts
Wenn Sie eine bestimmte Seite für CLI-Nutzung optimieren, siehe den Abschnitt Ollama CLI im Spickzettel, einschließlich Befehlsbeispielen für
ollama serve,ollama psundollama run.
Schnelle Tune-Up-Rezepte
Stabilität zuerst
OLLAMA_NUM_PARALLEL=1- Verwenden Sie kleinere / quantisierte Modelle
- Bevorzugen Sie kürzere Kontextgrößen
Durchsatz zuerst
OLLAMA_NUM_PARALLEL=2(oder höher, wenn Sie Reserven haben)- Berücksichtigen Sie Anfrage-Batching auf der Client-Ebene
- Stellen Sie ausreichendes VRAM und CPU-Threads sicher
“Mir geht VRAM aus, wenn zwei Anfragen eintreffen”
- Reduzieren Sie
OLLAMA_NUM_PARALLEL - Verwenden Sie ein aggressiver quantisiertes Modell
- Reduzieren Sie Kontextlänge / max tokens
Fehlerbehebung
Symptome dafür, dass OLLAMA_NUM_PARALLEL zu hoch ist
- Anfragen schlagen unter Last intermittierend fehl
- GPU OOM / Modell-Entladung tritt häufig auf
- Latenz-Spitzen, wenn die zweite Anfrage eintrifft
Symptome dafür, dass OLLAMA_NUM_PARALLEL zu niedrig ist
- CPU/GPU ist unterausgelastet
- Queuing-Verzögerungen dominieren die Gesamtarbeitszeit
Tipp: Wenn Sie auch Ihren Client kontrollieren, fügen Sie Retries mit Jitter und Keep-Alive-Verbindungen hinzu. Viele “Ollama ist langsam”-Probleme sind tatsächlich Queuing + Verbindungs-Overhead.
Ollama: Anfragent-Batching vs. Parallele Ausführung
Batching in Ollama bezieht sich auf die Praxis, mehrere eingehende Anfragen zu gruppieren und sie als Einheit zu verarbeiten. Dies ermöglicht eine effizientere Nutzung der Rechenressourcen, insbesondere auf Hardware, die von parallelisierten Operationen profitiert (wie GPUs).
Wenn mehrere Anfragen für dasselbe Modell gleichzeitig eintreffen, kann Ollama sie zu einem Batch zusammenfassen und gemeinsam verarbeiten, sofern der Speicher es zulässt. Dies erhöht den Durchsatz und kann die Latenz für jede Anfrage reduzieren, da das Modell optimierte Matrixoperationen über den Batch nutzen kann.
Batching ist besonders effektiv, wenn die Anfragen in Größe und Komplexität ähnlich sind, da dies eine bessere Hardware-Auslastung ermöglicht.
Parallele Ausführung in Ollama bedeutet, mehrere Anfragen gleichzeitig zu bearbeiten, entweder für dasselbe Modell oder für verschiedene Modelle, abhängig vom verfügbaren Speicher und der Konfiguration.
Ollama unterstützt zwei Ebenen der Parallelität:
- Multi-Modell-Laden: Wenn genügend Speicher verfügbar ist, können mehrere Modelle geladen und gleichzeitig Anfragen bedienen.
- Parallele Anfragen pro Modell: Jedes geladene Modell kann mehrere Anfragen parallel verarbeiten, gesteuert durch die OLLAMA_NUM_PARALLEL-Einstellung (Standard ist 1 oder 4, abhängig vom Speicher).
Wenn Anfragen das Parallelitätslimit überschreiten, werden sie (FIFO) gequeut, bis OLLAMA_MAX_QUEUE erreicht ist.
Fazit
Ollama nutzt sowohl Batching als auch parallele Ausführung, um mehrere Anfragen effizient zu verarbeiten. Batching gruppiert Anfragen für eine gleichzeitige Verarbeitung, während parallele Ausführung es ermöglicht, dass mehrere Anfragen (oder Modelle) gleichzeitig laufen. Beide Methoden hängen vom Systemspeicher ab und sind für optimale Leistung konfigurierbar.
Für weitere Benchmarks, Konnektivitäts-Einstellungen und Leistungsanweisungen, schauen Sie in unseren LLM Performance: Benchmarks, Engpässe & Optimierung Hub.