[vz-users] vzlogger produziert Fehlermeldungen
applicationMGR
applicationMGR at ecoCuyo.de
So Apr 23 11:48:43 CEST 2023
Hallo Rupert,
vielen Dank für die Anregungen. Den minütlichen aggregate.php-Job kann ich mir tatsächlich sparen. Bis vor kurzem hatte ich noch 30 Sekunden Aggtime - die habe ich verlängert, seit ich die Werte zur Ansteuerung unterschiedlicher PV-geführter Regelungsprozesse aus dem Push-Server mit sehr kurzen Intervallen abgreifen kann - das ist schon super! Die Aggtime werde ich vermutlich noch weiter verlängern, um DB-Volumen einzusparen.
Hinsichtlich der SD-Karte habe ich gute Erfahrungen damit gemacht, das SWAP-File zu disablen, damit nicht permanent auf der SD-Card hermgerödelt wird. Meine Karten halten inzwischen mehrere Jahre durch. Es kommt halt nur zu Problemen, wenn mehr Arbeitsspeicher erforderlich wird, z.B. beim Einspielen eines größeren DB-Restore oder wenn ich den vzlogger neu compilieren möchte; dann schalte ich nur für diesen Zweck das Swapping ein.
Mit SSD hatte ich es mal versucht mit einer Transcend JetDrive SSD, die beim Upgrade eines Apple übrig blieb. Leider wollen die Raspis nicht mir dieser SSD-Type sprechen und da habe ich die Versuche wieder eingestellt. Ist schon seltsam, denn an allen anderen Rechnern muss man nur einstecken und los gehts.
Zu Deinem Hinweis zu Aggregate/max habe ich noch eine Frage. Ich dachte, dass die Middleware bei Energiezähler-Kanälen jeweils zwischen zwei Tupels differenziert und einen Leistungswert ermittelt, der im Frontend angezeigt wird. Wenn ich mir vorstelle, ich erhalte durch Aggtime 10 Differentiale (Leistungswerte), repräsentiert das Differntial zwischen dem letzten und damit höchsten Energiezählerwert und dem vorletzten nicht zwingend die größte Leistung, die in dem betrachteten Intervall auftritt.
Das Problem mit dem voll laufenden Arbeitsspeicher scheint sich aber mehr und mehr auf den push-server zu konzentrieren, denn bereits zwei Installationen zeigen die gleichen Probleme. Die Installation auf dem 8GB Raspi 4 ist nur weniger auffällig, weil der Speicher viel länger braucht, um voll zu laufen - wenn auch im Log die gleichen Fehler auflaufen, kommt es nicht zu spürbaren Störungen am Frontend. Der Raspi 3 spinnt bereits nach 24 h.
Interessant ist, dass der Push-Server irgendwann anfängt, zig Tuples mit größerer Zeitverzögerung raus zu hauen. Währenddessen zeigt der Raspi extreme Reaktionszeiten und man kann sich nur noch mit großer Geduld per SSH einloggen (Headless).
$ wscat -c ws://xxx.xxx.xxx.xxx:8082/socket
Connected (press CTRL+C to quit)
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239511818,5406,1],[1682239513142,5407.200000000001,1],[1682239514541,5413.1,1]]}}
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239511818,5490.1960628484585,1],[1682239513142,5438.0664652567975,1],[1682239514541,5403.859922935317,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239510836,-3119.7000000000003,1],[1682239512254,-3079.5,1],[1682239513662,-3060.8,1],[1682239515155,-3071.8,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239510836,3153.6388067864987,1],[1682239512254,3046.5444363390943,1],[1682239513662,3068.18182580173,1],[1682239515155,3134.628258051684,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239516562,-3054.7000000000003,1],[1682239518076,-3121,1],[1682239519557,-3126.6000000000004,1],[1682239521082,-3073.9,1],[1682239522949,-2998.4,1],[1682239523916,-3022.3,1],[1682239525512,-3013.7000000000003,1],[1682239527184,-3026.6000000000004,1],[1682239528538,-3026.6000000000004,1],[1682239529590,-3020.6000000000004,1],[1682239531156,-3015,1],[1682239532512,-3033.9,1],[1682239533933,-3028.3,1],[1682239535257,-3026.6000000000004,1],[1682239536685,-3013.4,1],[1682239538816,-3019.3,1],[1682239539932,-3013.4,1],[1682239540966,-3026.2000000000003,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239516562,3070.362480972876,1],[1682239518076,3091.149266361403,1],[1682239519557,3160.027001533534,1],[1682239521081,3070.8661522921616,1],[1682239522949,2312.633824361213,1],[1682239523916,4467.425036948124,1],[1682239525512,2706.7669240155615,1],[1682239527110,2703.379213959165,1],[1682239528439,3250.564342158643,1],[1682239529590,3753.258022508033,1],[1682239531112,2838.3705720951616,1],[1682239532470,3181.148756059526,1],[1682239533841,3150.9846709750154,1],[1682239535257,3050.8474652039804,1],[1682239536685,3025.2100727638276,1],[1682239538697,2147.1173015550876,1],[1682239539932,3497.975717189341,1],[1682239540966,4177.949694300528,1]]}}
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239515865,5405.900000000001,1],[1682239517178,5405.900000000001,1],[1682239518513,5405.6,1],[1682239519909,5405.900000000001,1],[1682239521285,5405.900000000001,1],[1682239522949,5398.400000000001,1],[1682239524007,5366,1],[1682239525512,5373.400000000001,1],[1682239527183,5379.5,1],[1682239528538,5379.5,1],[1682239529354,5373.3,1],[1682239531156,5373.400000000001,1],[1682239532512,5379.5,1],[1682239533933,5379.200000000001,1],[1682239534727,5379.5,1],[1682239536436,5354.3,1],[1682239537403,5353,1],[1682239538816,5366,1],[1682239540068,5360.200000000001,1],[1682239541403,5360.200000000001,1]]}}
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239515865,5438.0664652567975,1],[1682239517178,5483.625285605483,1],[1682239518513,5393.258426966292,1],[1682239519909,5415.472763998802,1],[1682239521285,5494.186069902986,1],[1682239522949,4326.923076923077,1],[1682239524007,7145.557635673278,1],[1682239525512,4784.053156146179,1],[1682239527110,4505.632040050063,1],[1682239528439,5417.607223476298,1],[1682239529354,7868.852459016393,1],[1682239531112,4300.341284722598,1],[1682239532469,5305.821665438467,1],[1682239533787,5462.822458270106,1],[1682239534727,7659.574468085107,1],[1682239536436,4212.990052662376,1],[1682239537403,7445.708376421923,1],[1682239538726,5442.1768707483,1],[1682239540068,5365.126676602086,1],[1682239541403,5393.258426966292,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682239542393,-3001.5,1]]}}
...
Wenn der Server rund läuft, sieht das so aus, dass pro Kanal alle 2 Sekunden ein Tuple ge-pushed wird:
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241523860,3265.306130558455,1]]}}
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241523860,3138.3,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241524071,3048.6944324127285,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241524071,-2944.7000000000003,1]]}}
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241525204,3674.3,1]]}}
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241525204,3749.9999760517053,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241525489,-3486,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241525489,3554.3018297853187,1]]}}
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241526517,4112.718964204113,1]]}}
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241526517,4058.3,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241526959,-3860.7000000000003,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241526959,3918.3673505880397,1]]}}
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241527881,4486.8035269273,1]]}}
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241527881,4372.5,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241528428,-4360.7,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241528428,4656.228723373439,1]]}}
< {"version":"0.3","data":{"uuid":"6c9c10a0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241529193,4830.7,1]]}}
< {"version":"0.3","data":{"uuid":"8c4d02b0-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241529193,4939.024382066436,1]]}}
< {"version":"0.3","data":{"uuid":"61d5d350-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241529845,-4475.3,1]]}}
< {"version":"0.3","data":{"uuid":"ec7c7360-xxxx-xxxx-xxxx-xxxxxxxxxxxx","tuples":[[1682241529845,4318.983776096567,1]]}}
Ich werde da mal tiefer bohren und versuchen, mich bei der Analyse der Ursache nützlich zu machen…
Schönen Sonntag,
Armin
> Am 22.04.2023 um 13:44 schrieb Rupert Schöttler <rupert.schoettler at gmx.de>:
>
> Hallo Armin,
>
> Am 21.04.23 um 11:35 schrieb applicationMGR:
>> Mit kam der Gedanke, dass das ggf. an der Aggregation liegen könnte (in vzlogger.conf aggtime 60 Sekunden):
>>
>> */10 * * * * flock -n /tmp/flock-vz_aggregate.lock php /var/www/volkszaehler.org/misc/tools/aggregate.php <http://volkszaehler.org/misc/tools/aggregate.php> run -m delta -l minute >/dev/null
>> 1 * * * * flock -n /tmp/flock-vz_aggregate.lock php /var/www/volkszaehler.org/misc/tools/aggregate.php <http://volkszaehler.org/misc/tools/aggregate.php> run -m delta -l hour >/dev/null
>> 0 1 * * * flock -n /tmp/flock-vz_aggregate.lock php /var/www/volkszaehler.org/misc/tools/aggregate.php <http://volkszaehler.org/misc/tools/aggregate.php> run -m delta -l day >/dev/null
>>
>> Durch den Wrapper sollten sich die php-cron-Jobs bei Performance eigentlich nicht stapeln oder doch?
>
> Nur damit hier keine Missverständnisse stehen bleiben: Die Aggregation (aggtime, aggmode usw.) im vzlogger hat nichts mit der Aggregation auf der Datenbank (aggregate.php) zu tun.
>
> Ersteres dünnt "high speed" Daten aus, so dass z.B. nur alle 60 sec ein Wert (der Mittelwert, das Maximum -- je nach aggmode) an die Middleware gesendet und in der DB gespeichert wird. Der Rest wird verworfen.
>
> Letzteres erzeugt verdichtete Daten für das Frontend, so dass der Bildaufbau bei Auswahl eines längeren Zeitraums schneller geht. Die Grafik für ein ganzes Jahr auf Basis von Minutenwerten z.B. müsste 8760*60 = über eine halbe Million Datensätze rendern bzw. intelligent verdichten. Diese Verdichtung macht aggregate.php und legt das Ergebnis zusätzlich in der DB ab.
>
> Wenn Du in vzlogger.conf aggtime immer auf mindestens 60 sec stehen hast, macht aggregate.php -l minute keinen Sinn: Dann gibt's nichts zu verdichten. :-)
>
> Übrigens: Wenn Dir die Zählerstände (OBIS 1-0:?.8.?) alle 60 sec reichen, solltest Du in diesen Channels aggmode auf max stellen. Zählerstände zählen immer nur nach oben. Mit max bekommst Du den letzten, zu dem dann auch der Zeitstempel passt.
>
>
>
> Am Anfang des Threads hast Du geschrieben:
>
>
>> Die Installation läuft auf einem Raspberry Pi 3 Model B Rev 1.2 mit SanDisk Ultra 16 GB microSDHC Memory Card.
> Dass die Lebensdauer dieser Karten, auch bei "schonenden" = vergleichsweise seltenen Schreibvorgängen auf die Datenbank, meist schon nach wenigen Monaten durch ist, ist Dir hoffentlich bekannt und bewusst. Eine kleine Investition in eine SSD oder einen FIT-Stick kann viele Stunden Fehlersuche und Neuinstallation vermeiden. Ich spreche da aus leidvoller Erfahrung...
>
> Gruß von Lech und Wertach
>
> Rupert
>
>
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20230423/b1eef5e7/attachment-0001.htm>
Mehr Informationen über die Mailingliste volkszaehler-users