[vz-users] Verarbeitung des Gesamtverbauchs für Strom führt oft zu einem Timeout

Julian Sikorski belegdol at gmail.com
Sa Jul 20 09:10:24 CEST 2024


Am 06.07.24 um 12:28 schrieb Julian Sikorski:
> Am 06.07.24 um 12:07 schrieb Julian Sikorski:
>> Hallo zusammen,
>>
>> ich bekomme oft einen Gateway Timeout wenn ich den Gesamtverbrauch von 
>> Strom berechnen möchte. Sei es in der Abbildung, oder über
>> http://odroidxu4.local:8080/data/xxx.json?from=0&group=day&tuples=1
>>
>> Datenbank und volkszähler laufen in einem Docker container auf einem 
>> Odroid HC1 NAS. Ich habe aggregation auf Monats-, Tages-, Stunden- und 
>> Minutenebene bereits am Laufen. Stromzähler liefert in der Tat über 
>> SML sehr viele Daten, sollte aber die Aggregation das Problem nicht 
>> lösen? Capabilities sehen wie folgt aus:
>>
>> version    "0.3"
>> capabilities
>> database
>> data
>> rows    10404482
>> size    623624192
>> aggregation
>> rows    397337
>> size    31522816
>> ratio    26.186
>>
>> Es gibt pro Kanal (3 insgesamt) jeweils 7 monatliche aggregationen in 
>> der Datenbank, geprüft mit:
>>
>> SELECT TYPE, FROM_UNIXTIME(TIMESTAMP/1000), channel_id, VALUE, count 
>> FROM volkszaehler.`aggregate` WHERE TYPE = 5 AND channel_ID = x
>>
>> LG,
>> Julian
>>
>>
> 
> Hier noch genauere überblick der Datenmengen, generiert mit:
> 
> SELECT COUNT(TIMESTAMP), 0 AS TYPE, channel_id
> FROM data
> GROUP BY channel_id
> union
> SELECT COUNT(TIMESTAMP), TYPE, channel_id
> FROM aggregate
> GROUP BY TYPE, CHANNEL_id
> 
> data
> ---
> | COUNT(TIMESTAMP) | TYPE | channel_id |
> | ---: | ---: | ---: |
> | 10317888 | 0 | 8 |
> | 50017 | 0 | 10 |
> | 63037 | 0 | 12 |
> | 280286 | 1 | 8 |
> | 50014 | 1 | 10 |
> | 56354 | 1 | 12 |
> | 4680 | 2 | 8 |
> | 4196 | 2 | 10 |
> | 2280 | 2 | 12 |
> | 196 | 3 | 8 |
> | 183 | 3 | 10 |
> | 180 | 3 | 12 |
> | 7 | 5 | 8 |
> | 6 | 5 | 10 |
> | 6 | 5 | 12 |
> 
> LG,
> Julian
> 
> 
Ich konnte theoretisch timeout in dem Dockerfile erhöhen. Würde aber 
zuerst schauen, wieso die Abfrage so lange dauert.
from=0&group=day&tuples=1 holt für das Gas die richtige Anzahl von 
Zeilen (194 heute). Kann man die Query, die an Datenbank geschickt wird, 
irgendwo sehen? Ich habe gesucht aber bisher war mein PHP Wissen 
unzureichend.
Wäre evtl. verzichten auf minutliche Aggregation sinnvoll, um die 
aggregate Tabelle deutlich zu verkleinern?

LG,
Julian




Mehr Informationen über die Mailingliste volkszaehler-users