DbLog Patch: Performance Logging, MYSQL crash fix

Begonnen von PatrickR, 25 Oktober 2015, 19:24:59

Vorheriges Thema - Nächstes Thema

PatrickR

Mahlzeit!

Anbei ein Patch für 93_DbLog.pm, Inhalt:
1. Fix von ChrisD für Crash bei Nicht-Erreichbarkeit des MySQL-Servers (http://forum.fhem.de/index.php/topic,34080.msg270862.html#msg270862)
2. Erweitertes Logging für das Laufzeit-Debugging (Im Wesentlichen wegen meines Performance-Problems. Ggf. den Log Level anpassen. Den habe ich aktuell auf 4 gesetzt, damit nicht bei jedem Push das jew. Reading geloggt wird.)

Stimmt eigentlich die MAINTAINER.txt noch? Dort ist tobiasfaust Maintainer, die letzten Patches kommen aber von rapster.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

rapster

Maintainer stimmt generell noch, bin blos die Aushilfe  ;D

Kann ich mir aber die Tage anschauen, wollte sowieso noch diesen Patch hier einchecken: http://forum.fhem.de/index.php/topic,40176.msg326353.html#msg326353
Komme zurzeit leider nur nicht wirklich dazu :)

Gruß
  Claudiu

PatrickR

Hallo Claudiu!

Danke für die Rückmeldung!

Grüße
Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

ChrisD

Hallo,

Mein Fix in dem verlinkten Beitrag ist leider nicht ganz komplett. Hier habe ich eine verbesserte Version gepostet bei der keine Daten verloren gehen.

Könntest du die in deinen Patch einbauen ?

Grüße,

ChrisD

betateilchen

Zitat von: PatrickR am 25 Oktober 2015, 19:24:59
Stimmt eigentlich die MAINTAINER.txt noch?

Das DbLog Modul ist die fhem-Nutte... da reitet jeder mal drauf rum und bringt ihr was Neues bei 8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rapster

 ;D Da konnt ich mir etz beim italiener das lachen ned verkneifen, geil!

rapster

#6
Zitat von: ChrisD am 25 Oktober 2015, 21:18:40
Mein Fix in dem verlinkten Beitrag ist leider nicht ganz komplett. Hier habe ich eine verbesserte Version gepostet bei der keine Daten verloren gehen.

@PatrickR & ChrisD:
Es wurde jetzt einen Patch, und zwei Links zu irgendwelchen Codeschnipsel gepostet, leider ganzschönes Durcheinander ;)

Kannst du (einer von euch) bitte nochmal einen einzelnen Patch mit den gewünschten Änderungen posten?

Gruß
  Claudiu

gero

Hallo Claudiu,

falls du etwas Zeit hast, wäre es nett, wenn du dir folgenden Patch auch mal ansehen könntest:

http://forum.fhem.de/index.php/topic,42727.msg348184.html#msg348184

Ich würde gerne das DBLog Modul wieder von meiner exclude_from_update Liste entfernen.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

PatrickR

Hi!

Zitat von: rapster am 26 Oktober 2015, 10:24:04
Kannst du (einer von euch) bitte nochmal einen einzelnen Patch mit den gewünschten Änderungen posten?

Selbstverständlich. Musste ihn aber nochmal neu machen, weil so ein Schelm heute noch ein Update eingecheckt hat.
@ChrisD: Hoffe, es passt so.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

rapster

#9
zu 1.
Hab ChrisD's verbesserten Patch bisschen abgeändert eingebaut, würde bitte einer der diese MySql Probleme hat das Ganze mal mit dem file im Anhang testen?
Leider wüsste ich nicht wie ich das Problem mit Sqlite provozieren kann, denn jedes mir erdenkliche Problem wird hier im nächsten (bereits vorhandenen) eval ohne crash abgefangen:
2015.10.26 21:24:18.354 2: DbLog: Failed to insert new readings into database: DBD::SQLite::st execute failed: database is locked at ./FHEM/93_DbLog.pm line 506.
2015.10.26 21:24:18.354 3: Connecting to database SQLite:dbname=/opt/fhem/dbLog.db with user
2015.10.26 21:24:18.355 3: Connection to db SQLite:dbname=/opt/fhem/dbLog.db established for pid 13954
2015.10.26 21:24:18.356 2: DbLog: Failed to insert new readings into database: DBD::SQLite::st execute failed: attempt to execute on inactive database handle at ./FHEM/93_DbLog.pm line 506.
2015.10.26 21:24:18.359 3: Connection to db SQLite:dbname=/opt/fhem/dbLog.db established


zu 2.
Ich denke die Log Funktion, welche sehr oft aufgerufen wird, sollte möglichst schlank gehalten werden.
Hier ist denke ich dein Patch welcher sonst wahrscheinlich kaum einem User weiterhelfen wird nicht besonders optimal.

Ist es wirklich notwendig hier dauerhaft die Dauer zu Loggen? Ich denke wenn du hier die Performance Probleme einmal auf deiner Seite ausradiert hast, sollte das Thema doch erledigt sein oder sehe ich das falsch?

Gruß
  Claudiu

PatrickR

#10
Hi!
Zitat von: rapster am 26 Oktober 2015, 21:44:50
zu 2.
Ich denke die Log Funktion, welche sehr oft aufgerufen wird, sollte möglichst schlank gehalten werden.
Hier ist denke ich dein Patch welcher sonst wahrscheinlich kaum einem User weiterhelfen wird nicht besonders optimal.
Das ist sicherlich Geschmackssache, mir z. B. ist absolut unklar, wem der "Notify from Device:"-Eintrag hilft :)
Zur Schlankheit: Man könnte es natürlich noch etwas verschlanken, wenn das Füllen des Arrays nur bei verbose 5 statt findet.

/Edit:
Man sollte auch nicht vergessen, dass DbLog - wenn es nicht rund läuft - gerade aus Deinem oben genannten Grund der absolute Performancekiller sein kann. Leider bietet DbLog bis dato keine Möglichkeit zur Analyse des Problems, da selbst bei verbose 5 nur die in die DB geschriebenen Daten geloggt werden. Über die Implementierung kann man sicherlich streiten. Mir war wichtig, dass pro Aufruf nur eine zusätzliche Zeile in das FHEM-Log geschrieben wird.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

rapster

Ich geb die Frage mal an Tobias weiter da er für das Modul verantwortlich ist, was er dazu meint.

Gruß
  Claudiu

Tobias

Ich habe das Problem noch nicht ganz verstanden.
Nur soweit, natürlich ist es gut wenn ein Modul im FHEM-Log sehr gesprächig ist, allerdings nur auf Anforderung (verbose=4 oder5). Ansonsten hat es die Klappe zu halten (verbose=3).

War das die Frage?

@betateilchen, fhem-nutte iss gut ;)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

PatrickR

@Tobias: So wie ich Claudiu verstehe geht es um die Frage Loglevel/verbose 5 oder Verzicht auf die zusätzliche Logzeile (und die damit verbundenen Zeitberechnungen.)

Patrick


Von unterwegs gesendet.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

rapster

@Patrick, so wie ich Tobias verstehe stört es ihn nicht, werde es in kürze einbauen und hier mal zum testen reinhängen.

Gruß
  Claudiu