# Parallelverarbeitung

> Zwischen der abschnittsweisen Parallelverarbeitung einer einzelnen Protokolldatei und der parallelen Verarbeitung vieler Protokolle wählen

---

LLMS-Index: [llms.txt](/de/llms.txt)

---

pgBadger bietet zwei einander ergänzende Modi für die Parallelverarbeitung. Wählen Sie den Modus anhand der Struktur Ihrer Eingabedaten und nicht allein nach der Anzahl der CPUs.

| Option | Parallelitätseinheit | Geeignet für | Wichtigste Einschränkung |
|---|---|---|---|
| `-j N` / `--jobs N` | Abschnitte einer Protokolldatei | eine große Protokolldatei mit wahlfreiem Zugriff | An Abschnittsgrenzen kann eine geringe Anzahl von Abfragen doppelt gezählt oder ausgelassen werden |
| `-J N` / `--Jobs N` | vollständige Protokolldateien | viele unabhängige Protokolle | nützlich nur, wenn genügend Dateien vorhanden sind, um die Worker auszulasten |

## Eine große Datei mit `-j` aufteilen {#single-file-jobs}

```console
$ pgbadger -j 8 /var/log/postgresql/postgresql.log
```

Der Algorithmus des Originalprojekts teilt jede Datei in `N` Bytebereiche auf, startet für jeden Bereich einen eigenen Parser, schreibt temporäre Binärstatistiken und führt diese anschließend zum endgültigen Bericht zusammen.

```text
for each log file
    divide the file into N chunks
    find each chunk's start and end offsets
    fork N parsers at those offsets
    write one temporary binary statistics file per parser
wait for the workers
merge the binary files and build the report
```

Da Protokolleinträge und mehrzeilige Anweisungen nicht genau an Byte-Offsets ausgerichtet sind, können an den Abschnittsgrenzen bis zu etwa `N` Abfragen pro Datei abgeschnitten, ausgelassen oder — häufiger — doppelt gezählt werden. Verwenden Sie diesen Modus für aggregierte Analysen sehr großer Dateien, nicht für Abläufe, die eine forensisch exakte Zählung jedes Protokolleintrags erfordern.

## Mehrere Dateien mit `-J` verarbeiten {#multiple-file-jobs}

```console
$ pgbadger -J 8 /var/log/postgresql/postgresql-*.log
```

Jeder Worker verarbeitet eine vollständige Datei, sodass dieser Modus Ungenauigkeiten an Abschnittsgrenzen vermeidet. Besonders nützlich ist er bei Hunderten kleiner Dateien und ausreichender CPU- sowie I/O-Kapazität. Die Dokumentation des Originalprojekts sieht `-J` auch für unabhängige komprimierte Dateien vor; das Aufteilen einer einzelnen Datei mit `-j` erfordert dagegen unkomprimierte Eingabedaten mit wahlfreiem Zugriff.

## Benchmark des Originalprojekts {#benchmark}

Das Handbuch des Originalprojekts nennt diese Messwerte für einen Host mit 8 CPUs. Betrachten Sie sie als Vergleich der beiden Algorithmen und nicht als Prognose für aktuelle Hardware.

Eine Datei mit 9.5 GB:

| Option | 1 CPU | 2 CPU | 4 CPU | 8 CPU |
|---|---:|---:|---:|---:|
| `-j` | 1h41m18 | 50m25 | 25m39 | 15m58 |
| `-J` | 1h41m18 | 54m28 | 41m16 | 34m45 |

Zweihundert Dateien à 10 MB, insgesamt 2 GB:

| Option | 1 CPU | 2 CPU | 4 CPU | 8 CPU |
|---|---:|---:|---:|---:|
| `-j` | 20m15 | 9m56 | 5m20 | 4m20 |
| `-J` | 20m15 | 9m49 | 5m00 | 2m40 |

In der Praxis empfiehlt sich `-j` für wenige große Dateien und `-J` für viele kleine Dateien. Sie können beide Modi kombinieren, sofern Eingabe und Plattform dies unterstützen. Messen Sie jedoch die Leistung dieser Kombination: Die Protokollanalyse kann eher durch den Durchsatz des Speichersystems als durch die CPU-Leistung begrenzt werden.

## Einschränkungen und temporäre Dateien {#limits-and-temporary-files}

- `-j` ist für komprimierte oder CSV-Eingabedaten nicht verfügbar und setzt das Forken von Prozessen voraus; daher steht dieser Modus unter Windows nicht zur Verfügung.
- Bei entfernten Eingaben unterstützt das Originalprojekt keine Verarbeitung von CSV-Dateien.
- Die parallele Analyse erstellt im ausgewählten temporären Verzeichnis Dateien mit Namen wie `tmp_pgbadgerXXXX.bin` (standardmäßig im temporären Systemverzeichnis).
- Löschen Sie diese Dateien nicht, während pgBadger läuft. Verwenden Sie `--tempdir`, um sie auf einem Speichermedium mit ausreichender Kapazität abzulegen.
- Beginnen Sie mit einer moderaten Anzahl von Workern und überwachen Sie CPU-Auslastung, Lesedurchsatz, Verbrauch an temporärem Speicherplatz und Laufzeit.

---

Rückverweise:

- [pgBadger](/de/docs/pgbadger/)
