[gelöst]DbLog steigt nach ein paar Sekunden aus

Begonnen von thburkhart, 11 Dezember 2022, 11:38:16

Vorheriges Thema - Nächstes Thema

thburkhart

Nach einiger Zeit läuft meine MariaDB endlich wieder.
Beim Config-Check ist alles ok

In FHEM kommt allerdings nach ein paar Sekunden die Fehlermeldung

DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbLog.pm line 2698.
das finde ich im logfile x mal.

Starte ich FHEM neu ist es wieder für ein paar Minuten ok.

das ist das dblog Listing:
nternals
COLUMNS
field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION
./configDB.conf
DEF
./configDB.conf .*:(temperature|humidity).*
FUUID
6395a74c-f33f-fd5f-bf68-e3ca20a9e2cee3df
FVERSION
93_DbLog.pm:v4.13.3-s26750/2022-11-26
MODE
asynchronous
MODEL
MYSQL
NAME
dblog_THB
NR
244
NTFY_ORDER
50-dblog_THB
PID
27535
REGEXP
.*:.*
STATE
DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbLog.pm line 2698.
TYPE
DbLog
UTF8
0
dbconn
mysql:database=fhem;host=localhost;port=3306
dbuser
fhemuser
eventCount
89
Readings
CacheOverflowLastNum
0
2022-12-11 11:33:23
CacheOverflowLastState
normal
2022-12-10 23:54:09
CacheUsage
46463
2022-12-11 11:33:23
NextSync
2022-12-11 11:32:53 or if CacheUsage 5000000 reached
2022-12-11 11:32:23
state
DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbLog.pm line 2698.
2022-12-11 11:32:23
dblog_THB
room
xDBLog
Attributes
DbLogType
History,frontend
deleteattr
alias
dblog_THB
deleteattr
asyncMode
1
deleteattr
bulkInsert
1
deleteattr
cacheLimit
5000000
deleteattr
event-min-interval
state:600
deleteattr
room
xDBLog
deleteattr
syncInterval
30
deleteattr
verbose
2
deleteattr
Probably associated with




wie kann ich denn die dblog neu initialisieren?

vielen Dank für Hilfe

Thomas

1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

CoolTux

Dü hast ./configDB.conf als Konfigfile für dblog angegeben.
Du solltest vielleicht eine dblog Konfig wählen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DS_Starter

Hallo Thomas,

neuinitialiseren geht einfach per "set ... reopen" oder FHEM Restart.

Aber ... das ist nicht dein Problem.
Wahrscheinlich ist es ein Folgefehler. Der MySQL-Server baut die Verbindung während der Operation ab.
Das wiederum könnte mit der Menge der übertragenenen Daten zusammenhängen, du überträgst immerhin einen Cache mit 46463 Einträgen.

Es gibt einen Serverparameter max_allowed_packet welcher in der my.cnf angepasst werden kann:
https://mariadb.com/docs/server/ref/mdb/system-variables/max_allowed_packet/

Wo findet man die my.cnf ? -> https://stackoverflow.com/questions/2482234/how-do-i-find-the-mysql-my-cnf-location

Weiterhin ist es ungewöhnllich dass sich in so kurzer Zeit der Cache derart aufbaut. Es scheint Daten zu geben die den Insert verhindern.
Du könntest das Attr "commitMode=ac:on_ta:off" und das Attr bulkInsert=0 setzen.

Schau dir auch gerne die neue DbLog Version 5.X an die bald ausgerollt wird. -> https://forum.fhem.de/index.php/topic,130588.0.html

LG und einen schönen 3. Advent,
Heiko

PS: einen schönen Gruß an CoolTux  :)
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Zitat von: CoolTux am 11 Dezember 2022, 12:12:52
Dü hast ./configDB.conf als Konfigfile für dblog angegeben.
Du solltest vielleicht eine dblog Konfig wählen.

Solange die in der Konfigurationsdatei enthaltenen Verbindungsparameter korrekt sind, darf die Datei für DbLog heißen, wie sie möchte. Prinzipiell also auch "guenther.conf" oder "freitag.wochenende"
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: DS_Starter am 11 Dezember 2022, 12:22:21
Weiterhin ist es ungewöhnllich dass sich in so kurzer Zeit der Cache derart aufbaut. Es scheint Daten zu geben die den Insert verhindern.

Vielleicht...

cacheLimit 5000000

...würde es auch schon helfen, das cacheLimit auf einen vernünftigen Wert zu reduzieren?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

thburkhart

Lieber Heiko,

erst mal danke für deine ausführlichen Hinweise.

Zitat
neuinitialiseren geht einfach per "set ... reopen" oder FHEM Restart.

Ich meinte, wie man die DbLog leert.

ZitatEs gibt einen Serverparameter max_allowed_packet welcher in der my.cnf angepasst werden kann:
https://mariadb.com/docs/server/ref/mdb/system-variables/max_allowed_packet/

in meiner my.cnf
steht bislang folgendes:
#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]
# Port or socket location where to connect
# port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

wie passe ich an?

ZitatWeiterhin ist es ungewöhnllich dass sich in so kurzer Zeit der Cache derart aufbaut. Es scheint Daten zu geben die den Insert verhindern.
Du könntest das Attr "commitMode=ac:on_ta:off" und das Attr bulkInsert=0 setzen.

das habe ich mal gemacht...

nun bekomme ich:


DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]
executing 23 generated 23 errors at ./FHEM/93_DbLog.pm line 2909.


Da ich ja eh mit einer blanken Datenbank starten möchte, bietet sich ja die die neue DbLog Version 5.X geradezu zum Test an :-)

was muss ich dazu machen?

Herzliche Grüße

Thomas










1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

thburkhart

Zitat von: betateilchen am 11 Dezember 2022, 12:46:18
Vielleicht...

cacheLimit 5000000

...würde es auch schon helfen, das cacheLimit auf einen vernünftigen Wert zu reduzieren?

das hatte ich schon selbst bemerkt und mit dem  hohen Wert als Laie den Fehler zu korrigieren versucht
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

DS_Starter

Zitat
Ich meinte, wie man die DbLog leert.
set ... purgeCache

Zitat
wie passe ich an?
Der Server inkludiert die Verzeichnisse

              # Import all .cnf files from configuration directory
              !includedir /etc/mysql/conf.d/
              !includedir /etc/mysql/mariadb.conf.d/

In diesen Verzeichnissen stehen evtl. auch noch .cnf Dateien die du dir anschauen solltest.
Wenn der Parameter max_allowed_packet nirgendwo zu finden ist, bietet es sich an z.B. eine my.cnf in einem der inkludierten Verzeichnisse anzulegen und dort eigene Einstellungen zu hinterlegen, z.B.


[mysqld]
max_allowed_packet = 1M


Zitat
nun bekomme ich:...
execute_array failed: MySQL server has gone away
Das bestätigt meine Einschätzung einer zu großen übertragenen Datenmenge.

Zitat
Da ich ja eh mit einer blanken Datenbank starten möchte, bietet sich ja die die neue DbLog Version 5.X geradezu zum Test an :-)

was muss ich dazu machen?
Wenn Fragen dazu sind, am Besten in dem anderen Thread.
Du lädst die Version aus meinem contrib  (siehe Fußtext)  mit dem Downloadbutton herunter und startest danach FHEM neu.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

thburkhart

wenn ich FHEm stoppe
komme ich mit phpMyAdmin wieder auf die FHEM Db

Strukturhistory
Spalten

SpalteDEVICE (MUL, varchar, NULL, nullable)
SpalteEVENT (varchar, NULL, nullable)
SpalteREADING (varchar, NULL, nullable)
SpalteTIMESTAMP (MUL, timestamp, curren...)
SpalteTYPE (varchar, NULL, nullable)
SpalteUNIT (varchar, NULL, nullable)
SpalteVALUE (varchar, NULL, nullable)


Die Spalten sind doch ok?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

DS_Starter

Wenn du dir unsicher bist und sowieso neu anfängst, dann lösche doch deine DB und benutze zur Einrichtung die bereitgestellten Scripte.
Auszug aus DbLog Hilfe:

...
Beispielcode bzw. Scripts zum Erstellen einer MySQL/PostgreSQL/SQLite Datenbank ist im SVN -> contrib/dblog/db_create_<DBType>.sql enthalten.
(Achtung: Die lokale FHEM-Installation enthält im Unterverzeichnis ./contrib/dblog nicht die aktuellsten Scripte !!)
...
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

thburkhart

ZitatCode: [Auswählen]
[mysqld]
max_allowed_packet = 1M

kann ich also direkt in der "Haupt" my.cfg machen ?

ZitatDas bestätigt meine Einschätzung einer zu großen übertragenen Datenmenge.

Da stellt sich nun die Frage, woher die vielen Daten kommen, ich habe ca. 30 LaCrosse, die das liefern
Attributes
IODev
JLLaCR
deleteattr
alexaName
Temp 00 aussen Süd Terrasse TFA
deleteattr
alias
Temp 00 aussen Süd Terrasse TFA
deleteattr
doAverage
1
deleteattr
event-min-interval
humidity:7200,temperature:7200
deleteattr
event-on-change-reading
battery
deleteattr
event-on-update-reading
humidity,state,temperature
deleteattr
genericDeviceType
thermometer
deleteattr
group
Temperatur und Feuchtigkeit,Temperatur und Feuchtigkeit aussen
deleteattr
room
Terrasse,LaCrosse,Temperaturen Aussen
deleteattr
userReadings
Temp: temperature [C] Hum: humidity [%]
deleteattr


also gefiltert

1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

DS_Starter

Zitat
kann ich also direkt in der "Haupt" my.cfg machen ?
Würde ich nicht tun.
Oftmals ist es so, dass bei einem Paketupdate der MySQL/MariaDB diese my.cfg mit den ausgelieferten Defaults überschrieben wird und deine Änderungen verloren gehen.
Zum Testen geht das natürlich.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

thburkhart

es geht leider nicht damit

also DB neu aufsetzen mit neuer Version
ich berichte dann
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

DS_Starter

Ein Blick mit listCache offenbart manchmal die üblichen Verdächtigen ... non-ASCII Zeichen welche die DB sich weigert zu speichern.

Das Attr "useCharfilter=1" hilft in solchen Fällen nur ASCII Zeichen durchzulassen.
Gibt noch mehr Möglichkeiten, aber das ist vermutlich die schnellste in diesen Fällen.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

thburkhart

74 => 2022-12-11 13:35:11|Temp1|FHEMPY|humidity_value: 75.0|humidity_value|75.0|%
75 => 2022-12-11 13:35:11|Temp1|FHEMPY|humidity_value: 75.0|humidity_value|75.0|%
76 => 2022-12-11 13:35:15|TX29DTH_22|LACROSSE|temperature: 6.3|temperature|6.3|
77 => 2022-12-11 13:35:15|TX29DTH_22|LACROSSE|humidity: 54|humidity|54|%
78 => 2022-12-11 13:35:18|Wohnzimmer_WT|MAX|temperature: 20.8|temperature|20.8|\xB0C
79 => 2022-12-11 13:35:31|TX29DTH_22|LACROSSE|temperature: 6.3|temperature|6.3|
80 => 2022-12-11 13:35:31|TX29DTH_22|LACROSSE|humidity: 54|humidity|54|%

hmm sehe als Laie nix Verdächtiges ...
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200