NEWS
REDIS will be back
-
Mich wundertdas ohne redis immer zwischen 200 und 400 MB freier Speicher waren und mit redis ein rapieder Sturz auf unter 40MB
-
Dann schau mal genau in top rein und sag wie die echte Speichernutzung ist.
-
Also ich hab zwischenzeitlich den Pi neugestartet und jetzt sieht alles wieder normal aus!
Hier mal n Auszug von top
Irgendwas muss am Mittag den Speicher auf kurze Zeit extrem verbraucht haben!Hätte da mal in top kucken sollen!
Ich beobachte das ganze mal
Johnny
-
Ich glaube ich herausgefunden woran es lag! Ich hab in dem Zeitraum wo plötzlich der frei Speicher flöten ging vom nas aus ein Backup von iobroker angestoßen und da hat sich dann der raspi wohl verhasspelt!
Hat sich also erledigt!
Johnny
-
Hallo,
ich habe Redis auf meinem Server installiert (keine Probleme).
Vorher lief das Skript zur Speicherung der States in drei Varianten (javascript.0 1 und 2). 3 Dateien wurden in nullkommanix angelegt.
Dann erfolgte die Umstellung auf Redis (erfolgreich).
Es waren, wie erwartet, alle States weg.
Also den Inhalt der Textdateien nacheinander in ein Skript kopiert und laufen lassen. Leider kein Erfolg. Die States werden nicht geschrieben.
Instanz 0: 1000 Zeilen,
Instanz 1: 550 Zeilen
Instanz 2: 5100 Zeilen!
Frage: Dauert das so lange oder werden States tatsächlich nicht geschrieben?
Habe zur Sicherheit mal wieder von Redis auf File zurückgestellt (alle States wieder da) und werde es vielleicht die Tage nochmal versuchen (vorher nochn Extra Backup anlegen).
Gruß
Pix
PS: Gute Installationsanleitung für Redis auf Mac OS X: http://jasdeep.ca/2012/05/installing-redis-on-mac-os-x/
-
Hi,
Ich habe versucht Redis zu installieren mit "apt-get install redis-server" und bekomme Fehler. (siehe unten)
(Die links werden nicht gefunden)
Es gibt nun alternative installationsanleitungen im Netz. Ich möchte da aber auf dem produktiven Raspi nicht zuviel rumspielen.
Ich habe einen Raspi2 und Jessie installiert. Habt ihr auch das Problem gehabt. ? - kann ich das irgendwie fixen ?
vG Looxer
!
! root@raspberrypi:~# apt-get install redis-server Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libjemalloc1 redis-tools The following NEW packages will be installed: libjemalloc1 redis-server redis-tools 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 332 kB/412 kB of archives. After this operation, 1,076 kB of additional disk space will be used. Do you want to continue? [Y/n] y Err http://mirrordirector.raspbian.org/raspbian/ jessie/main redis-tools armhf 2:2.8.17-1+deb8u3 404 Not Found [IP: 5.153.225.207 80] Err http://mirrordirector.raspbian.org/raspbian/ jessie/main redis-server armhf 2:2.8.17-1+deb8u3 404 Not Found [IP: 5.153.225.207 80] E: Failed to fetch http://mirrordirector.raspbian.org/raspbian/pool/main/r/redis/redis-tools_2.8.17-1+deb8u3_armhf.deb 404 Not Found [IP: 5.153.225.207 80] ! E: Failed to fetch http://mirrordirector.raspbian.org/raspbian/pool/main/r/redis/redis-server_2.8.17-1+deb8u3_armhf.deb 404 Not Found [IP: 5.153.225.207 80] ! E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? !
-
Hi,
ich antworte mir mal selbst.
es sollte ein Pakete update vorangeschickt werden, also "agp-get update".
Dann geht´s
vG Looxer
-
Ich antworte mir auch mal selbst :lol:
Die gesicherten Textdateien sollte man vor dem Copy&Paste in ein Skript nochmal prüfen. Ich hatte vor allem durch HTML-Code, der als Wert in einen State geschrieben werden sollte, Probleme bekommen. Das o.g. Skript fügt den Wert (wenn dieser eine Zeichenkette ist) zwischen zwei einfache Hochkommata in den setState-Befehl ein. Wenn nun die Zeichenkette selbst mit einem Hochkomma beginnt, führt das sofort zum Problem.
Zur Veranschaulichung:
<u>schlecht:</u>
Name: ueberschrift
Wert: '
Überschrift
'
vom Skript zusammengebaut: <size size="115">setState(ueberschrift, ' '
Überschrift
' ');</size>
<u>gut:</u>
vom Hand editiert: <size size="115">setState(ueberschrift, " '
Überschrift
' ");</size>
Schließlich habe ich das Skript zum Wiedereinfügen der Werte in Etappen auskommentiert, um mehr Kontrolle zu haben.
Jetzt hat es geklappt und ich beobachte die nächsten Tage mal die Geschwindigkeit.
Frage: Wo finde ich jetzt mit Redis Skripte und Views?
Gruß
Pix
-
Hi,
…ja die text-datei muss überarbeitet werden . Ich habe z.B. "ä" dummerweise in den states. Das muss dann überarbeitet werden.
und json ebenfalls
Allerdings habe ich andere probleme. Alle Scripts werden staendig ausgeführt. Was zu einer überlastung des Systems führt.
Ich konnte keinen Fehler im Log sehen, nur eben, dass die scripts immer wieder neu gestartet wurden.
Ich musste die Sicherung wieder herstellen
vG Looxer
-
Wie stelle ich auf Redis um!? [emoji848]
Gesendet von meinem iPhone mit Tapatalk
-
Wie stelle ich auf Redis um!? [emoji848] `
Hi,
das ist im ersten post beschrieben.
bevor du den Befehl apt-get "apt-get install redis-server" ausführst erstmal den Pakekte update machen, also:
"apt-get update"
dann den iobroker konfigurieren (überall enter ausser bei "type of states" - Da gibst du ein "r" ein.
im Log siehst du dann das REDIS aktiv ist.
ACHTUNG. Die states aus javascript werden zum großen teil dann gelöscht sein.
Dafür gibt es ein script (hier im thread). Das sollte helfen. Möglicherweise muss aber nachgearbeitet werden.
vG Looxer
-
hey,
habe gerade mein System (multihost with 4 Rechner) auf redis umgestellt, kein Problem damit gehapt, nachdem ich den Thread durchgelesen habe, gute Arbeit, danke.
Vielleicht könnte Bluefox im ersten Post dazunehmen, dass man bei multihost bei redis die ip auf 0.0.0.0 stellen muß, da es sonst gar nicht funkt
-
Allerdings habe ich andere probleme. Alle Scripts werden staendig ausgeführt. Was zu einer überlastung des Systems führt.
Ich konnte keinen Fehler im Log sehen, nur eben, dass die scripts immer wieder neu gestartet wurden.
Ich musste die Sicherung wieder herstellen `
Ich habe für jede Instanz ein Skript zu Erstellung der Textdateien angelegt, gestartet und deaktiviert/gelöscht.Dann habe ich ein neues Skript erstellt, das den überarbeiteten Inhalt der gerade erstellten Textdateien enthält. Das Skript habe ich dann ebenfalls deaktiviert, bzw. gar nicht erst aktiviert. Im Javascript-Editor sieht man ja auch sehr gut, wo es noch Fehler durch Zeichen o.ä. im Code zu bereinigen gibt. Vor allem lange Zeichenketten, wie ganze JSON-Ausgaben oder HTML-Dateien, die eh später zeitgesteuert neu erstellt werden, habe ich raus gelöscht.
Dann, nach dem Neustart von ioBroker, das Skript durch "/" und "/" in Häppchen auskommentiert und so immer wieder gestartet, bis alle States eingelesen waren.
Gruß
Pix
-
Hat einer der Redis Nutzer schon für den Redis Master/Slave aufgesetzt bzw Cluster konfiguriert?
Vor allem bei Multi Host vllt eine gute Anwendung…
Ich habe aktuell nur in mein Backup Skript eingebaut das ein Redis Snapshot erstellt wird und mit gesichert wird.
Ingo F
-
Bei Redis ist Master - Save wirklich Master-Slave. Will sagen, der Slave ist per Default Readonly. Selbst wenn man den Default ändert erfolgt keine Übertragung vom Slave an den Master. Replikation erfolgt bei Redis generell asynchron. Locks gibt es nicht, was zu schönen Änderungsanomalien führen kann.
Cluster dienen zur Leistungssteigerung und HA-Absicherung auf mehrere Nodes. Die Daten werden dabei per Sharding anhand der Hashwerte auf alle Nodes im Cluster verteilt. Damit alle Daten gelesen werden können brauchen alle Clients Verbindungen zu allen Nodes des Clusters.
Wahrscheinlich ist beides nicht das gewünschte Verhalten.
Gesendet von meinem GT-N8000 mit Tapatalk
-
@pix:Ich habe für jede Instanz ein Skript zu Erstellung der Textdateien angelegt, gestartet und deaktiviert/gelöscht.
Dann habe ich ein neues Skript erstellt, das den überarbeiteten Inhalt der gerade erstellten Textdateien enthält. Das Skript habe ich dann ebenfalls deaktiviert, bzw. gar nicht erst aktiviert. Im Javascript-Editor sieht man ja auch sehr gut, wo es noch Fehler durch Zeichen o.ä. im Code zu bereinigen gibt. Vor allem lange Zeichenketten, wie ganze JSON-Ausgaben oder HTML-Dateien, die eh später zeitgesteuert neu erstellt werden, habe ich raus gelöscht. `
Hi,
habs jetzt auch hinbekommen. Irgendwie hatte ich nicht bemerkt, dass die Datei "states" sich mit jeder Ausführung verlängert und nicht ersetzt wird.
Das Programm benutze ich nun in abgeänderter Form (mit Datum und Zeit), um vor dem nächtlichen Backup alle states zu sichern.
vG Looxer
Falls für jemand interessant:
var fs = require('fs'); var now = new Date(); // store current date and time var year = now.getFullYear(); var month = addZero(now.getMonth()+1).zero2; var day = addZero(now.getDate()).zero2; var Thour = addZero(now.getHours()).zero2; var Tmin = addZero(now.getMinutes()).zero2; var Tsec = addZero(now.getSeconds()).zero2; var logdate = day + '.' + month + '.' + year; var logtime = Thour + ':' + Tmin + ':' + Tsec; datei = "/opt/iobroker/states"; // Schedule für die Updates schedule("50 23 * * *", function () { var cacheSelectorState = $('state[state.id=javascript.0.*]'); cacheSelectorState.each(function (id, i) { var val = getState(id).val; var zk = "setState('"+id+"', "+val+");\n"; if(typeof val === "string") zk = "setState('"+id+"', '"+val+"');\n"; fs.appendFileSync(datei + logdate + "-"+ logtime + ".txt", zk); }); }); // --------------------------------------------------------------------------------------- // Funktion zur Erzeugung von 2 oder 3 führenden Nullen für das Datum Format //----------------------------------------------------------------------------------------------------- function addZero(i) { if (i < 10) { j = "00" + i; i = "0" + i; } if (i > 9 && i < 100) { j = "0" + i; } return { 'zero2' : i, 'zero3' : j }; } // Ende Funktion
-
Bei Redis ist Master - Save wirklich Master-Slave. Will sagen, der Slave ist per Default Readonly. Selbst wenn man den Default ändert erfolgt keine Übertragung vom Slave an den Master. Replikation erfolgt bei Redis generell asynchron. Locks gibt es nicht, was zu schönen Änderungsanomalien führen kann.
Cluster dienen zur Leistungssteigerung und HA-Absicherung auf mehrere Nodes. Die Daten werden dabei per Sharding anhand der Hashwerte auf alle Nodes im Cluster verteilt. Damit alle Daten gelesen werden können brauchen alle Clients Verbindungen zu allen Nodes des Clusters.
Wahrscheinlich ist beides nicht das gewünschte Verhalten. `
Naja,
Cluster ist wohl etwas oversized und man braucht einige Rechner um das sauber aufzusetzen. Ebenso sharding ist eher unnötig.
Aber ein Slave ist sinnvoll in meinen Augen:
Redis persistiert in unregelmäßigen Abständen auf Platte. Wenn Redis oder der Host danach abstürzt sind die Daten seit dem letzten persistierten Stand weg … Mit einem Slave auf einem zweiten Host hat man wenigstens den Datenstand. Man kann dann den Stand persistieren und für den Master als initialstand nutzen oder den Slave zum Master machen und iobroker umkonfigurieren den zu benutzen. Ich denke das das sinnvoll ist weil sonst die States in so einem Fall halt pot. nicht aktuell sind. Das könnte ggf. Logiken durcheinanderbringen.
In seltenen Fällen fehlt vllt ein letztes Update eines States aber besser ein Datensatz als viele.
Oder?!
-
Ja. Kann man machen. Hilft nur nicht viel, wenn man die Umschaltung nicht automatisiert bekommt.
Insbesondere die States enthalten ja nur kurzlebige Informationen, die eigentlich schon veraltet sind, wenn die Verbindung zum Service (z b CCU) verloren geht und können einfach aus dem letzten Snapshot und über die Adapter rekonstruiert werden.
Redis selbst ist extrem stabil und ist mir in den letzten Jahren im Produktiveinsatz noch nicht weggeflogen. Nur wenn das ram voll ist oder das System Probleme hat kann es vorkommen. Dann ist aber der js-controller auch weg.
Ein komplette HA Absicherung mit Standby Instanz und z.b. Pacemaker und IP Umzug wäre schön aber alleine für die Haussteuerung zu aufwändig.
Gesendet von meinem SM-G900F mit Tapatalk
-
Da hast du recht. Die Logiken im JavaScript ( z.B. Bei mir die Keymatic Steuerung und so kommt auch durcheinander wenn Ccu Verbindung weg wäre. Aber den letzten Stand der States zu haben falls der Host abtaucht oder es solche Speicherprobleme gibt ist schonmal was wert denke ich.
Ich überlege gerade allgemein wegen ausgallszenarien und so … Vor zwei Wochen ist die fritzbox ausgefallen ... Das fehlende Internet war erträglich, aber ohne Routing ging gar nichts mehr.
Und das home automation ist inzwischen akzeptiert und ganz blöd wenns weg ist. Daher suche ich gerade alle fallback Konzepte zusammen bzw denke sie mir aus
Ingo f
-
Bei mir will iobroker mit Redis gar nicht erst starten:
! TypeError: 2016-09-26 18:07:30.810 error at readableAddChunk (_stream_readable.js:146:16)
! TypeError: 2016-09-26 18:07:30.810 error at Socket.emit (events.js:169:7)
! TypeError: 2016-09-26 18:07:30.810 error at emitOne (events.js:77:13)
! TypeError: 2016-09-26 18:07:30.810 error at Socket. (/opt/iobroker/node_modules/redis/index.js:267:27)
! TypeError: 2016-09-26 18:07:30.810 error at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:415:12)
! TypeError: 2016-09-26 18:07:30.810 error at JavascriptRedisParser.Parser.returnReply (/opt/iobroker/node_modules/redis/index.js:188:18)
! TypeError: 2016-09-26 18:07:30.810 error at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:816:9)
! TypeError: 2016-09-26 18:07:30.810 error at normal_reply (/opt/iobroker/node_modules/redis/index.js:714:21)
! TypeError: 2016-09-26 18:07:30.810 error at Command.callback (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:602:49)
! TypeError: 2016-09-26 18:07:30.810 error at /opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInRedis.js:1135:36
! TypeError: 2016-09-26 18:07:30.810 error that._clone is not a function
! uncaught 2016-09-26 18:07:30.800 error exception: that._clone is not a function
! host-odibroker 2016-09-26 18:07:30.739 info InRedisDB connected
! host-odibroker 2016-09-26 18:07:30.730 info States connected to redis 127.0.0.1:6379
! host-odibroker 2016-09-26 18:07:30.611 info ip addresses: 192.168.1.232 2003:c3:e3c1:1600:21e:6ff:fe33:9755 fe80::21e:6ff:fe33:9755
! host-odibroker 2016-09-26 18:07:30.609 info hostname: odibroker
! host-odibroker 2016-09-26 18:07:30.607 info Copyright 2014-2016 bluefox, hobbyquaker
! host-odibroker 2016-09-26 18:07:30.590 info iobroker.js-controller version 0.12.2 js-controller starting
! host-odibroker 2016-09-26 18:07:24.230 info terminated
! host-odibroker 2016-09-26 18:07:24.225 info received SIGTERM
! iobroker 2016-09-26 18:07:23.906 info exit 0
! iobroker 2016-09-26 18:07:23.872 info Starting node restart.js
! host-odibroker 2016-09-26 18:07:23.411 info terminated
! iobroker 2016-09-26 18:07:23.377 info _restartIch hatte es so in diesem thread gelesen, dass ich nicht mehr die git version von iobroker nehmen muss. Oder doch?
Welche Module genau?
****Meine aktiven Module:
Admin: 1.6.3
Host: 0.12.2****
Danke im voraus:
Fitti