DbLog / DbLog_reduceLogNbl - schreibt Dateisystem voll

Begonnen von WhyTea, 18 März 2020, 13:18:04

Vorheriges Thema - Nächstes Thema

DS_Starter

Hi Werner,

ZitatWennn Datensätze gelöscht werden sollen, braucht man da ein "ORDER BY TIMESTAMP ASC"?
nein, hat er ja auch nicht, sondern reduceLog ausgeführt.
ESXi@NUC+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

Frank_Huber

Sehe ich das im Log richtig dass bei beiden Befehlen keine "Antwort" kommt?
Oder erscheint die nur in den Readings und nicht im Log?

Beim count ist im Log z.B. nach dem SQLexecute Schluss.

DS_Starter

Ja, mit verbose 5 wäre auch das Ergebnis zu sehen, aber das wäre jetzt too much  ;)
ESXi@NUC+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

WhyTea

Aber zumindest sehe ich jtzt schon etwas mehr...
801623 fhemuser 192.168.6.113:44396 fhem Query 1118 Creating sort index SELECT TIMESTAMP,DEVICE,'',READING,VALUE FROM history where TIMESTAMP >= '2019-11-24 14:37:56' AND TIMESTAMP <= '2019-11-27 14:37:56' ORDER BY TIMESTAMP ASC

Allerdings kanni ch den Process nicht mit

set sqlCmd kill 801623

beenden

DS_Starter

Warum nicht ? Irgendwelche Meldung im Log bzw. state ?
ESXi@NUC+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

WhyTea

Nein leider nicht. :-(

Das Einzige was man sieht ist
LASTCMD sqlCmd kill 801623

Muss nun auch leider abbrechen. Morgen versuche ich dann die Datensätze zu löschen.
Ich werde berichten!

Bis hierher schon mal vielen Dank für Eure Hilfe!

Daniel

DS_Starter

Na dann bis morgen. Benutze auf jeden Fall die aktuellste Version

  FVERSION  93_DbRep.pm:v8.32.4-s21429/2020-03-15

bzw. die neuste Entwicklungsversion aus dem oben angegebenen Thread.
Die Möglichket für kill habe ich auch noch nicht allzu lange eingebaut.

LG,
Heiko
ESXi@NUC+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

Wernieman

Ich hatte den SQL Befehl aus Seiner Logausgabe ... und da erscheint der "Order by" ... kenne mich aber jetzt mit dem Modul selber zuwenig aus. War deshalb nur eine "Anmerkung"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

WhyTea

#23
Guten Morgen!  :)

Also ich benutze die Version 
FVERSION 93_DbRep.pm:v8.32.4-s21429/2020-03-15

Heute Morgen habe ich erfolgreich ein reduzeLog 100-110 durchführen können.
2020.03.20 08:37:37 3: DbRep DbRep_Device - ################################################################
2020.03.20 08:37:37 3: DbRep DbRep_Device - ###                    new reduceLog run                     ###
2020.03.20 08:37:37 3: DbRep DbRep_Device - ################################################################
2020.03.20 08:37:37 4: DbRep DbRep_Device - -------- New selection ---------
2020.03.20 08:37:37 4: DbRep DbRep_Device - Command: reduceLog
2020.03.20 08:37:37 4: DbRep DbRep_Device - timeDiffToNow - year: , day: 110, hour: , min: , sec:
2020.03.20 08:37:37 4: DbRep DbRep_Device - Year 2020 is leap year
2020.03.20 08:37:37 4: DbRep DbRep_Device - startMonth: 11 endMonth: 2 lastleapyear: 2020 baseYear: 2019 diffdaylight:0 isdaylight:0
2020.03.20 08:37:37 4: DbRep DbRep_Device - timeOlderThan - year: 0, day: 100, hour: 0, min: 0, sec: 0
2020.03.20 08:37:37 4: DbRep DbRep_Device - Year 2020 is leap year
2020.03.20 08:37:37 4: DbRep DbRep_Device - startMonth: 3 endMonth: 11 lastleapyear: 2020 baseYear: 2019 diffdaylight:0 isdaylight:0
2020.03.20 08:37:37 4: DbRep DbRep_Device - FullDay option: 0
2020.03.20 08:37:37 4: DbRep DbRep_Device - Time difference to current time for calculating Timestamp begin: 9590401 sec
2020.03.20 08:37:37 4: DbRep DbRep_Device - Timestamp begin human readable: 2019-11-30 08:37:36
2020.03.20 08:37:37 4: DbRep DbRep_Device - Time difference to current time for calculating Timestamp end: 8726401 sec
2020.03.20 08:37:37 4: DbRep DbRep_Device - Timestamp end human readable: 2019-12-10 08:37:36
2020.03.20 08:37:37 4: DbRep DbRep_Device - SQL execute: SELECT TIMESTAMP,DEVICE,'',READING,VALUE FROM history where  TIMESTAMP >= '2019-11-30 08:37:36' AND TIMESTAMP <= '2019-12-10 08:37:36' ORDER BY TIMESTAMP ASC;
2020.03.20 08:37:37 3: DbRep DbRep_Device - reduce data older than: 2019-12-10 08:37:36, newer than: 2019-11-30 08:37:36
2020.03.20 08:37:37 3: DbRep DbRep_Device - reduceLog requested with options:  INCLUDE -> Devs: % Readings: %
2020.03.20 08:37:37 3: DbRep DbRep_Device - reduceLog deleting 9649 records of day: 2019-11-30


Das bestärkt mich in der Annahme das das Problem zwischen 113 und 116 liegt. Dieser reduzeLog läuft gerade und ich muss warten bis er vor die Wand läuft da wieder gigantische Tempdateien angelegt werden. Also melde ich mich in ca. 1 stunde wieder. Danach versuche ich direkt ein delEntries 113-116 und hoffe das Problem damit beseitigt zu haben.

Wobei mir gerade einfällt kann ich 113-116 vorher extraieren um im Nachgang das eigentlich Problem analysieren zu können?

Gruß
Daniel

DS_Starter

Moin Daniel,

ZitatWobei mir gerade einfällt kann ich 113-116 vorher extraieren um im Nachgang das eigentlich Problem analysieren zu können?
Ja, mit

  set <name> exportToFile

Exportiert die Daten in ein oder mehrere CSV-Dateien. Comref beschreibt genau die Benutzung.

Grüße,
Heiko
ESXi@NUC+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

WhyTea

Ich habe ein export versucht.
exportToFile /tmp/export.csv
dies Attribute waren gesetzt.
timeDiffToNow d:116
timeOlderThan d:113

Leider ohne  Erfolg.

Im Dateisytem der Fhem-VM wird die Datei /tmp/export.csv erstellt. Aber sie bleibt leer und der Vorgang bricht nach wenigen Minuten ab.
2020.03.20 12:03:50 4: DbRep DbRep_Device - Export data to file: /tmp/export.csv
2020.03.20 12:03:50 4: DbRep DbRep_Device - SQL execute: SELECT TIMESTAMP,DEVICE,TYPE,EVENT,READING,VALUE,UNIT FROM history where TIMESTAMP >= '2019-11-24 12:03:49' AND TIMESTAMP <= '2019-11-27 12:03:49' ORDER BY TIMESTAMP;
2020.03.20 12:06:44 1: Cannot fork: Cannot allocate memory
2020.03.20 12:06:44 1: Cannot fork: Cannot allocate memory
Out of memory (Needed 2963536 bytes)
2020.03.20 12:06:47 2: DbRep DbRep_Device - DBD::mysql::st execute failed: MySQL client ran out of memory at /var/fhem/FHEM/93_DbRep.pm line 5745.


Die Fhem-VM hat 2GB Ram zugewiesen wovon im normalbetrieb nur 150MB belegt werden. Der Export der Daten aus den vier Tagen kann niemals so groß sein. Ich kann es mir so erklären das die fehlerhaften Daten in der Datenbank beim SELECT eine Art Datenloop verursachen sodaß im Endeffekt unendlich Daten entstehen.

Das ist jetzt nur eine eher laienhafte Vermutung meinerseits da ich mich nicht wirklich mit SQL Datenbanken auskenne.
Anders kann ich mir das Verhalten allerdings nicht mehr erklären.

Wernieman

Da es eine mySQL DB (MariaDB),
mal ein "optimize" Table probiert? Nicht das irgendwo etwas "verspult" ist ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

DS_Starter

Irgendwas scheint an den Daten in diesem Bereich sehr faul zu sein. Du kannst auch noch probieren, die CSV in diesem Bereich in noch kleineren Zeitscheiben zu exportieren. Geht ja im Prinzip stundenweise.
Damit du hinterher das mal analysieren kannst was da problematisch war.
ESXi@NUC+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

WhyTea

#28
Ein Optimize lief sauber durch.

2020.03.20 12:43:09 3: DbRep DbRep_Device - ################################################################
2020.03.20 12:43:09 3: DbRep DbRep_Device - ###          New optimize table / vacuum execution           ###
2020.03.20 12:43:09 3: DbRep DbRep_Device - ################################################################
2020.03.20 12:43:09 3: DbRep DbRep_Device - Searching for tables inside database fhem....
2020.03.20 12:43:09 3: DbRep DbRep_Device - Size of database fhem before optimize (MB): 3123.67
2020.03.20 12:43:09 3: DbRep DbRep_Device - Optimizing tables
2020.03.20 12:43:09 3: DbRep DbRep_Device - Optimizing table `current` (MYISAM). It will take a while.
2020.03.20 12:43:09 3: DbRep DbRep_Device - Table 1 `current` optimized successfully.
2020.03.20 12:43:09 3: DbRep DbRep_Device - Optimizing table `history` (MYISAM). It will take a while.
2020.03.20 12:56:05 3: DbRep DbRep_Device - Table 2 `history` optimized successfully.
2020.03.20 12:56:05 3: DbRep DbRep_Device - 2 tables have been optimized.
2020.03.20 12:56:05 3: DbRep DbRep_Device - Size of database fhem after optimize (MB): 3115.10
2020.03.20 12:56:05 3: DbRep DbRep_Device - Optimize tables of database fhem finished - total time used (hh:mm:ss): 00:12:55
2020.03.20 12:56:05 3: DbRep DbRep_Device - Optimize tables finished successfully.


Ein anschließender Export nicht.
2020.03.20 13:26:41 4: DbRep DbRep_Device - Export data to file: /tmp/export.csv
2020.03.20 13:26:41 4: DbRep DbRep_Device - SQL execute: SELECT TIMESTAMP,DEVICE,TYPE,EVENT,READING,VALUE,UNIT FROM history where TIMESTAMP >= '2019-11-24 13:26:40' AND TIMESTAMP <= '2019-11-27 13:26:40' ORDER BY TIMESTAMP;
Out of memory (Needed 2963536 bytes)
2020.03.20 13:29:37 2: DbRep DbRep_Device - DBD::mysql::st execute failed: MySQL client ran out of memory at /var/fhem/FHEM/93_DbRep.pm line 5745.

Wernieman

@DS_Starter
Weißt Du die exacten SQL-Statements? WÜrde sonst mal vorschlagen, direkt über einen mysql-Client das Problem zu bearbeiten
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html