887399ef85
Die Laufzeit steckt fast vollstaendig im Warten auf die CSV-Dateien von archive.sensor.community - je Sensor rund 0,24 s, davon nur 0,02 s der Influx-Write und 0,01 s die Mongo-Abfrage. Die Schleife ueber die Sensoren laeuft deshalb jetzt mit mehreren Arbeitern gleichzeitig (-p bzw. PARALLEL, Default 4, 1 = altes Verhalten). Gemessen fuer 2026-08-01 (280 Laermsensoren, 344660 Werte, -d influx): 1 -> 79 s, 4 -> 33 s, 8 -> 35 s, 16 -> 31 s. Ab etwa 4 gleichzeitigen Abrufen liefert das Archiv nicht mehr schneller; derselbe Verlauf zeigt sich mit blossem curl ohne Datenbank (71 / 32 / 28 / 29 / 29 s bei 1, 4, 8, 16, 32 Abrufen). Der Default steht deshalb auf 4 und nicht hoeher - mehr erzeugt nur Last beim fremden Server. checkProperties() wird jetzt awaited - der Aufruf lief bisher ohne await gegen das bulkWrite am Ende von main(), was mit parallelen Sensoren kein Randfall mehr waere. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
64 lines
2.5 KiB
YAML
64 lines
2.5 KiB
YAML
# Eigenstaendiges Stack fuer readarchive - kein Dauerdienst, sondern ein Lauf
|
|
# mit Parametern. Liest rueckwirkend die Tagesdateien von
|
|
# archive.sensor.community ein, um Luecken zu fuellen.
|
|
#
|
|
# Dieselbe Datei dient beiden Wegen:
|
|
#
|
|
# Kommandozeile (Parameter als Argumente):
|
|
# docker compose -f readarchive-stack.yml run --rm readarchive \
|
|
# -t noise -s 2026-07-22 -e 2026-07-23 -d influx
|
|
#
|
|
# Portainer (Parameter als Environment-Variablen des Stacks):
|
|
# START=2026-07-22 END=2026-07-23 TYP=noise DBASE=influx
|
|
# -> Deploy the stack; der Container laeuft einmal durch und endet.
|
|
# Fuer den naechsten Zeitraum die Variablen aendern und
|
|
# "Update the stack".
|
|
#
|
|
# readFromcsv.js liest jeden Parameter auch aus einer Env-Variablen:
|
|
# -s = START (Default: gestern), -e = END (Default: Startdatum + 1 Tag,
|
|
# exklusiv), -t = TYP (Default: noise), -d = DBASE (Default: both),
|
|
# -p = PARALLEL (Default: 4) - so viele Sensoren werden gleichzeitig geholt.
|
|
#
|
|
# Voraussetzungen:
|
|
# * Der Haupt-Stack laeuft, denn dessen Netz wird hier eingebunden. Der Name
|
|
# ist <stack-name>_default (im Portainer unter Networks nachsehen).
|
|
# * Zugangsdaten und LOCALDIR wie im Haupt-Stack - auf der Kommandozeile aus
|
|
# einer .env neben dieser Datei, im Portainer aus den Stack-Variablen.
|
|
# * Auch mit DBASE=influx wird Mongo gebraucht (dort liegen die Metadaten der
|
|
# Sensoren), das Netz muss also beide erreichen.
|
|
|
|
# Eigener Projektname, damit dieses Compose-File auf der Kommandozeile nicht
|
|
# das Projekt des Haupt-Stacks uebernimmt (sonst "orphan containers" und ein
|
|
# versehentliches "down" trifft den ganzen Stack). Portainer setzt den
|
|
# Projektnamen ueber den Stack-Namen und ueberschreibt diesen Wert.
|
|
name: readarchive
|
|
|
|
services:
|
|
readarchive:
|
|
image: docker.citysensor.de/readarchive
|
|
environment:
|
|
MONGOHOST: mongodb
|
|
INFLUXHOST: influxdb
|
|
MONGOAUTH: "true"
|
|
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
|
|
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
|
|
# leer lassen = Default (siehe oben)
|
|
START: ${START:-}
|
|
END: ${END:-}
|
|
TYP: ${TYP:-noise}
|
|
DBASE: ${DBASE:-influx}
|
|
PARALLEL: ${PARALLEL:-4}
|
|
volumes:
|
|
- ${LOCALDIR}/noisesensors/log:/var/log
|
|
- ${LOCALDIR}/noisesensors/data/readarchive:/opt/app/readarchive/data
|
|
# Einmal-Lauf: nach dem Ende nicht neu starten. Exit-Code != 0 bedeutet,
|
|
# dass Influx-Writes fehlgeschlagen sind (Details im Log).
|
|
restart: "no"
|
|
networks:
|
|
- noise
|
|
|
|
networks:
|
|
noise:
|
|
external: true
|
|
name: noisesensors_default
|