Performance DS213+ MySQL Datenbank

Begonnen von emanuel, 06 Dezember 2016, 10:00:24

Vorheriges Thema - Nächstes Thema

emanuel

Hallo liebe Community,

ich habe mir eine kleine FHEM Anlage zusammengebaut um im ersten Schritt die Temperatur und Verbrauchswerte (Gas, Strom) im Haus aufzuzeichnen und später zu visualisieren.

Hardware:
# Raspberry Pi 2 mit FHEM
# Synology DS213+ als MySQL Datenbank "Server" und Webserver im Intranet
# Funk-Konfigurations-Adapt. HM-CFG-LAN
# GAS Homematic Komplettbausatz Zählersensor-Sendeeinheit mit Lesekopf
# STROM Homematic Komplettbausatz Zählersensor-Sendeeinheit mit Lesekopf
# Homematic Funk Temperatur Sensor (außen)

Alles läuft seit ca. 1 Jahr sehr gut, allerdings wird die Datenbank mit den vorhandenen Devices ziemlich gross, aktuell laut PHPMyAdmin ca. 300 MB.
Wenn ich einfache Anzeigen von Werten mache (Listen) benötigt dies mitunter 30s auf der Synology Disk Station DS213+ (Intranet!!!).

Daher meine Fragen:
1. Ist ggf. die DS213+ nicht performant genug um diese Datenbank zu hosten und auch zu visualisieren?

Ich überlege ggf. die Datenbank auf einen Webserver (Domainfactory) auszulagern.
2. Kann ich für eine Übergangszeit die Daten gleichzeitig in zwei Datenbanken schreiben lassen, sprich db.conf (Synology) und db2.conf (externer Webserver)?

Danke und Grüße
Emanuel

Wernieman

Ich kann Dir zu 1. und 2. nichts sagen, aber eine Bemerkung zu 3.:
Dir ist bewusst, das Dein Internetzugang keine Laufgarantie hat? Kein Dienstleister Garantiert in Deutschland den (privaten) Internetzugang, auch wenn man immer wieder liest 99% Verfügbarkeit. Wobei 99% Verfügbarkeit auch bedeuten kann, das der Zugang mal 2 Tage "weg" ist. Was meinst Du macht Dein fhem, wenn die DB nicht erreichbar ist?

Kurzgefasst:
- Was sagt denn die Hardware (CPU/Speicher)? (Pi, Synology)
- Läuft jetzt der Webserver auf der Synology oder auf dem Pi?
- Kannst Du "Datenreduzieren"? Gibt genug Threads dazu im Forum ...
- Kannst Du einen Ausfall bei wegbrechender Internetleitung verkraften?
- 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

marvin78

Es lohnt sich immer erstmal zu schauen, ob man das überhaupt alles loggen muss. Der erste Schritt sollte sein, das Logging zu reduzieren. Nicht jedes Event muss in die Log-Datenbank. Braucht man wirklich die Information, ob am 23.01.2014 das Licht im Wohnzimmer an war? Eher nicht. Für alte Daten würde ich also über Ausdünnung nachdenken und dann würde ich das Logging auf die interessanten und wichtigen Daten reduzieren. Das fängt dann schon bei der richtigen Definition des/der DBLog Device(s) an. DBLog Exclude macht dann den Rest.

emanuel

@Wernieman:
Bei der Internetverbindung hast Du natürlich recht. Ein zwei Tages Ausfall hatte ich bisher noch nicht, ein paar Stunden würden dann halt die Verbrauchswerte/Temperaturen fehlen, was für mich verschmerzbar wäre.
Aber vielleicht doch ein Grund mehr an der internen Hardware und den dBlogs zu arbeiten.

Die rudimentäre Anzeige in der Synology zeigt keine Auffälligkeiten, vielleicht sollte ich aber dort nochmal weitere Tools verwenden.
Der Webserver läuft auf der Synology DS213+.

@marvin78
Dieses SQL Pattern wiederholt sich etwa alle 2-3 Minuten:
KEL.NRJ.GAS.000 = Gaszähler
KEL.NRJ.STROM.000 = Stromzähler
HMLAN01 = HM-CFG-LAN
GAR.TH.NORDSEITE.000 = Thermometer

('2016-12-05 11:21:41', 'HMLAN01', 'HMLAN', 'loadLvl: low', 'loadLvl', 'low', ''),

1. Mit den HMLAN01 Readings load Level low fange ich nichts an, kann ich die eliminieren?

('2016-12-05 11:21:51', 'KEL.NRJ.GAS.000', 'CUL_HM', 'boot: off', 'boot', 'off', ''),
('2016-12-05 11:21:51', 'KEL.NRJ.GAS.000', 'CUL_HM', 'eState: E: 1276.88 P: 0.242', 'eState', 'E: 1276.88 P: 0.242', ''),
('2016-12-05 11:21:51', 'KEL.NRJ.GAS.000', 'CUL_HM', 'gasCnt: 1276.88', 'gasCnt', '1276.88', ''),
('2016-12-05 11:21:51', 'KEL.NRJ.GAS.000', 'CUL_HM', 'gasCntCalc: 1276.88', 'gasCntCalc', '1276.88', ''),
('2016-12-05 11:21:51', 'KEL.NRJ.GAS.000', 'CUL_HM', 'gasPower: 0.242', 'gasPower', '0.242', ''),

2. Bei dem Gaswert interessiert mich ja eigentlich nur 1276.88, der Rest ist uninteressant.


('2016-12-05 11:22:06', 'HMLAN01', 'HMLAN', 'loadLvl: low', 'loadLvl', 'low', ''),

('2016-12-05 11:22:26', 'KEL.NRJ.STROM.000', 'CUL_HM', 'boot: off', 'boot', 'off', ''),
('2016-12-05 11:22:26', 'KEL.NRJ.STROM.000', 'CUL_HM', 'eState: E: 582080.8 P: 41', 'eState', 'E: 582080.8 P: 41', ''),
('2016-12-05 11:22:26', 'KEL.NRJ.STROM.000', 'CUL_HM', 'energy: 582080.8', 'energy', '582080.8', ''),
('2016-12-05 11:22:26', 'KEL.NRJ.STROM.000', 'CUL_HM', 'energyCalc: 582080.8', 'energyCalc', '582080.8', ''),
('2016-12-05 11:22:26', 'KEL.NRJ.STROM.000', 'CUL_HM', 'power: 41', 'power', '41', ''),

3. Bei dem Strom interessiert mich ja eigentlich nur 582080.8, der Rest ist uninteressant.


('2016-12-05 11:22:31', 'HMLAN01', 'HMLAN', 'loadLvl: low', 'loadLvl', 'low', ''),
('2016-12-05 11:22:56', 'HMLAN01', 'HMLAN', 'loadLvl: low', 'loadLvl', 'low', ''),
('2016-12-05 11:23:21', 'HMLAN01', 'HMLAN', 'loadLvl: low', 'loadLvl', 'low', ''),


('2016-12-05 11:23:23', 'GAR.TH.NORDSEITE.000', 'CUL_HM', 'battery: ok', 'battery', 'ok', ''),
('2016-12-05 11:23:23', 'GAR.TH.NORDSEITE.000', 'CUL_HM', 'humidity: 85', 'humidity', '85', '%'),
('2016-12-05 11:23:23', 'GAR.TH.NORDSEITE.000', 'CUL_HM', 'T: -0.6 H: 85', 'T', '-0.6 H', '85'),
('2016-12-05 11:23:23', 'GAR.TH.NORDSEITE.000', 'CUL_HM', 'temperature: -0.6', 'temperature', '-0.6', '°C'),

4. Bei dem Thermometer interessiert mich ja eigentlich nur die Temperatur -0.6 und Luftfeuchte 85, der Rest ist uninteressant.

Tedious

Ich denke mal das Problem dürfte/könnte mit den "nur" vorhandenen 512MB Ram zusammenhängen. Hab grade mal geschaut, bei mir belegt MySQL (allerdings auf Win10) zugesichert 166MB Ram,  bei einer DB-Größe von rund 80MB. Ich cleane die DB allerdings auch monatlich (alle Readings des Monats als INSERT in eine Monats-DB exportieren, denn die Readings löschen, denn OPTIMIZE TABLE). Kenne mich mit Synologies nicht aus, aber da muss man sich doch die Auslastungen anschauen können.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

emanuel

41 MB freier Speicher im Laufenden Betrieb, vielleicht nicht ausreichend...Spitzen gibt es über längere Zeit allerdings nicht.

chris1284

mysql gibt zwar keine hardwareanforderungen an aber die meisten dbs profitieren von ram, ram , ram und schnellem speicher. beides hat soe in nas nicht....
evtl hilft dir er hier weiter um in etwa die anforderungen zu bekommen http://www.mysqlcalculator.com/. wenn man bedenkt das neben mysql noch samba und ande dienste laufen (mediastreaming usw) wirds sicher eng für mysql. in der syno kannst du doc schön schauen wie die auslastung ist wenn du ne abfrage machst. es hängt natürlich auch von deiner /der abffrage und der datenbank struktur ab wie schnell die ergebnisse kommen.

emanuel

@chris1284
Das ist mal ein super Link.
Eigentlich suche ich ja nur nach einer Legitimation mir ein neues NAS zu kaufen...  ;D
Da würde ich direkt auf ein DS716+II mit 8GB RAM gehen.

Möchte wie oben geschrieben erst mal Daten sammeln und die später über Browser visualisieren um auch Auswertungen zu Verbräuchen zu fahren...aber alles nur eine Spielerei.  ::)

Wernieman

Oder auf der anderen Seite upgraden. Wenn DU anstatt des PIs eine "größere Plattform" nimmst, könntest DU auch dort locker eine DB zum rennen bringen ...
- 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

emanuel

@Wernieman
Hast Du da eine Empfehlung?

Finde die Raspberry bisher einen guten Kompromiss um zu starten.
Außerdem bin ich ein Freund beim Herumbasteln im Netzwerk erst mal nicht zu hoch zu integrieren.
Wollte FHEM auch erst auf das NAS packen, wenn man da aber für FHEM an den falschen Stellen rumbastelt stehen auf einmal die Netzwerklaufwerke und restlichen Dienste nicht mehr zur Verfügung...

Wernieman

Habe deshalb bei mir:
- Synology als NAS (praktisch nur)
- ein ZOTAC CI320 als "Server" (Den giebt es nur nicht mehr)

Anstatt des ZOTAC kann man auch einen Intel NUC nehmen, der hat aber einen Lüfter. Sind zwar deutlich teurer als ein Raspi, dafür aber auch gleich eine völlig andere Leistungsklasse (max 8GByte Speicher + SSD). Und Stromtechnisch mit praktisch ~7W auch nicht schlecht ...

Aber um ein Aufräumen der DB wirst Du dann auch nicht rumkommen ...
- 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

Tedious

Ich nutze dafür einen Beelink Z83 vom Chinamann, Lieferzeit war glaube ich 2 Wochen. 32GB eMMC, 2GB Ram, x5-Z8300 CPU, lüfterlos. Braucht rund 4-6W je nach Load, hostet MySQL, ist der Squeezebox-Server im Netzwerk, gleichzeitig auch ein Squeezebox-Client (hängt am AV-Receiver, deutlich bessere Audioqualität als ein RPi ohne externe Soundkarte) und ist mein Gateway von extern ins interne Netz (via Teamviewer). Bekommst Du in D um einen 100er Schein, aus China im Sale für rund 80€.

Reicht hierfür völlig aus, auch die eMMC-Größe (ich hab noch rund 12GB frei), hier mal ein paar Sysinfos, man sieht schön dass er die meiste Zeit Idlet. Dazu noch ein HWInfo unter Last, die Temperaturen hat er gut im Griff totz passiver Kühlung:



FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...