Autor Thema: FHEM hängt, wenn DBlog ausgelastet  (Gelesen 7602 mal)

Offline NehCoy

  • Full Member
  • ***
  • Beiträge: 240
FHEM hängt, wenn DBlog ausgelastet
« am: 26 August 2019, 11:45:05 »
Hallo!

Ich habe ein wenig mit der Datenbank (MariaDB) "gespielt" und einige Einträge geändert.
Um genau zu sein, habe ich Gerätenamen in der Datenbank geändert, weil ich diese in FHEM geändert habe und in den SVG Plots nichts mehr angezeigt wurde (https://forum.fhem.de/index.php?topic=103261).

Danach ist mir dann folgendes aufgefallen:
Wenn eine Webseite mit Plots aufgerufen wird, hängt FHEM so lange bis die Datenbank die Anfrage beantwortet hat.
Das mag zwar belanglos klingen, aber eine Anfrage dauerte je Datensatz mehrere Minuten was sich bei 7 Datensätzen in den zwei Plots ganz schön aufsummiert hat.
MariaDB [fhem]> SHOW FULL PROCESSLIST;
+----+--------+-----------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
| Id | User   | Host      | db   | Command | Time | State        | Info                                                                                                                                                                                                                                                                                                                                                                                                                               | Progress |
+----+--------+-----------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
|  2 | user| localhost | fhem | Sleep   | 1344 |              | NULL                                                                                                                                                                                                                                                                                                                                                                                                                               |    0.000 |
| 51 | user| localhost | fhem | Query   |   95 | Sending data | SELECT
                  DATE_FORMAT(TIMESTAMP, '%Y-%m-%d %H:%i:%s'),
                  DEVICE,
                  READING,
                  VALUE
                   FROM history WHERE 1=1 AND DEVICE  = 'knx.Wetter.Helligkeit.Sued' AND READING = 'state' AND TIMESTAMP >= STR_TO_DATE('2019-08-25 00:00:00', '%Y-%m-%d %H:%i:%s') AND TIMESTAMP <= STR_TO_DATE('2019-08-26 00:00:00', '%Y-%m-%d %H:%i:%s') ORDER BY TIMESTAMP |    0.000 |
| 52 | user| localhost | fhem | Query   |    0 | init         | SHOW FULL PROCESSLIST                                                                                                                                                                                                                                                                                                                                                                                                              |    0.000 |
+----+--------+-----------+------+---------+------+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
3 rows in set (0.01 sec)

Zwar mag mein manueller Eingriff Ursache für die lange Bearbeitungszeit sein, aber das Systemverhalten sehe ich dennoch als kritisch.
Geht es nicht, das FHEM die Queries in einem eigenen Thread startet und die Plots nachträglich anzeigt, sobald diese von der Datenbank beantwortet wurden?
Hatte gestern echt leicht Panik, das ich mein FHEM zerschossen habe.

Danke & Grüße
NehCoy

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4519
Antw:FHEM hängt, wenn DBlog ausgelastet
« Antwort #1 am: 26 August 2019, 12:20:46 »
Dafür gibt es bereits mögliche Einstellungen.
Für Schreibvorgänge gibt es das attr asynchMode und bezüglich SVG Erstellung bzw. Lesevorgängen gibt es das attr plotfork in den FHEMWEB devices.
Führe im DbLog mal ein set configCheck aus. Der schreibt einiges aus.
Daneben gibt es noch DbRep mit dem du viele Reportings und Datenpflegemassnahmen non-blocking ausführen kannst.

Grüße,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline NehCoy

  • Full Member
  • ***
  • Beiträge: 240
Antw:FHEM hängt, wenn DBlog ausgelastet
« Antwort #2 am: 26 August 2019, 20:25:19 »
Hallo Heiko,

danke für die Antwort und die Tipps!

Bzgl. plotfork:
In der FHEM Referenz steht:
Zitat
plotfork
Falls gesetzt, dann werden bestimmte Berechnungen (z.Bsp. SVG und RSS) auf nebenläufige Prozesse verteilt. Voreinstellung ist 0. Achtung: nicht auf Systemen mit wenig Hauptspeicher verwenden.
Was heißt "wenig Hauptspeicher"? Kann man das auch in MB/GB angeben? Verwende einen Raspberry PI B+ mit 512 MB RAM. Frei sind angeblich nur 43 MB.
top - 20:22:07 up 1 day,  3:50,  1 user,  load average: 0.13, 0.07, 0.06
Tasks:  67 total,   1 running,  39 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  1.3 sy,  0.0 ni, 97.7 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :   443084 total,    43560 free,   238536 used,   160988 buff/cache
KiB Swap:   102396 total,     5000 free,    97396 used.   138104 avail Mem

Das mit dem asynchMode -Attribut schaue ich mir auch noch an.

Grüße
NehCoy

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4519
Antw:FHEM hängt, wenn DBlog ausgelastet
« Antwort #3 am: 26 August 2019, 20:30:03 »
Klingt nach ein bisschen wenig RAM. Aber muss nicht sein, kommt auf dein Gesamtsystem an.
asynchMode arbeitet nach einem ähnlichen Prinzip. Auch hier wird RAM benötigt.

Probiers einfach und beobachte deinen Speicher und Swap.

LG,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter