NEWS
js-controller 2.0 ab sofort im Latest Repo
-
@MathiasJ sagte in js-controller 2.0 ab sofort im Latest Repo:
Log im Debug:
Danke für den Report, bitte 0.10.1 probieren
-
@Chaot sagte in js-controller 2.0 ab sofort im Latest Repo:
Oder anders gefragt:
Bringt die Umstellung von file/redis auf redis/redis noch Geschwindigkeit oder macht das dann eher nichts aus?
Prozessorlast und Speicher ist mir eher nebensächlich.Vor der selben Frage steht ich auch gerade. Mit Umstellung auf js-controller 2.0 und dem Umzug der Daten für den Docker Container auf eine SSD in der Syno 918+ rennt das System eigentlich ganz ordentlich
-
@darkiop
Mein System läuft auf file/redis und das ist schon deutlich schneller als file/file vorher.
Ich bin mir aber nicht sicher ob redis/redis nochmals Vorteile bringt. -
@Chaot Ok, danke für den Hinweis. Dann werd ich das dochmal angehen
Redis wird dann ebenfalls in einem Container auf der SSD neben dem Container für den ioBroker laufen. Muss ich, außer für ein Backup des Redis-Containers, noch irgendwas anderes beachten?
-
@Chaot sagte in js-controller 2.0 ab sofort im Latest Repo:
Ich bin mir aber nicht sicher ob redis/redis nochmals Vorteile bringt.
Ich glaube das die Vorteile marginal sind. Der js-controller wird bei redis/redis weniger CPU brauchen und ja es könnte etwas schneller sein einfach weil Redis schneller ist - andererseits ist Redis "single-Threaded" und mehr Requests die auf eine Redis-Instanz gefeuert werden können sich auch gegenseitig behindern. Wie hoch die Performancegewinne am Ende ausfallen erwarte ich daher sehr System- und Adapter- und Kombinationsabhängig. Generell ist es etwas schneller als file/file. Da Objekte aber nicht so oft geändert/erzeugt werden als States ist der reine Vorteil von Objekten in Redis kleiner als der wenn man die States umstellt.
Redis/Redis ist, wie oben schon gesagt, die Grundlage um mittelfristig ein hochverfügbares System aufzubauen, bei dem zB zwei Raspis laufen und einer als "Hot Standby" agiert der übernimmt falls der erste ausfällt. Oder dafür das man einen Cluster von Hosts aufbauen kann und Adapter bei Bedarf von einem ausgefallenen Node auf einen automatisiert umstellt. Mit dem Support von Redis-Sentinel kann dafür auch die Redis-DB hochverfügbar gemacht werden. Für Hochverfügbarkeit DARF nichts in einem Dateisystem liegen ...
Lange Rede kurzer Sinn: Redis/Redis ist cool, aber Performancegewinne sind wenn ein Nebeneffekt. Die Zielsetzung dieses Features ist ein anderes.
-
@darkiop sagte in js-controller 2.0 ab sofort im Latest Repo:
Muss ich, außer für ein Backup des Redis-Containers, noch irgendwas anderes beachten?
Infos zum Thema "Redis Persistance" siehe Artikel und Links oben.
Auch hier muss man überlegen was man will. Mit Redis hat man keine "alle paar Stunden Backups" wie bei den File-DBs aktuell. bedeutet: Wenn man Redis einmal am Tag backupt muss man bis dahin zurück im Worst Case.
Um das abzusichern kann man einen Redis-Slave aufsetzen, so hat man den aktuellen Stand auf zwei Hosts - hilft aber auch nur bei File-System-Fehlern und sollten dann getrennte Dateisysteme sein.Eine Absicherung für "uups ich habe was gelöscht was ich nicht wollte" ist bei Redis wieder etwas schwieriger. Da ist man beim "BGSAVE" und Speichern des dump.drb . Diese Dump-File Generierung kostet aber kurzzeitig "doppelt RAM". Muss man wieder berücksichtigen.
Also Redis generell und speziell Redis für Objekte sollte man gut überlegen ...
-
@apollon77 Danke für deine Ausführungen.
Also werde ich einstweilen bei file/redis bleiben.
Ausfallsicherheit bzw. Hochverfügbarkeit werde ich frühestens nächstes Jahr angehen.So nebenbei:
Ist eigentlich geplant im ioBroker für Redis eine Backuplösung zu implementieren oder eventuell ein Adapter in Planung der sowas übernehmen könnte? -
@Chaot backitup kann das glaube ich schon.
-
@apollon77 gerade mal nachgesehen, auch mein VZDump backup file ist von
- 4,68GB (alter Controller)
auf - 5,39GB (neuer Controller)
angestiegen
- 4,68GB (alter Controller)
-
@apollon77 Alles klar, Danke für die ausführliche Info. Schau mir das mal an.
Ggf. teste ich dann auch erst file/redis wie @Chaot
Andere Frage, seit wann ist dem im Log die Process ID?
-
-
Jetzt muss ich mich auch mal melden
ioBroker läuft nach dem Update soweit.
Er startet beim Aufrufen der Adapter-Seite im Admin aber komplett neu.
Im Log sind dann folgende Meldungen:2019-10-13 10:49:54.699 - error: host.Nathan uncaught exception: Cannot create property 'stats' on string 'image/png' 2019-10-13 10:49:54.700 - error: host.Nathan TypeError: Cannot create property 'stats' on string 'image/png' at RedisHandler.handler.on (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServerRedis.js:434:31) at RedisHandler.emit (events.js:198:13) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/redisHandler.js:89:37) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5) at processImmediate (timers.js:658:5)
Auserdem habe ich im Log-Verzeichniss seltsame Unterverzeichnisse:
ls -lR .: -rw-rw-r--+ 1 iobroker iobroker 147230 Okt 13 16:02 iobroker.log.2019-10-13 drwxrwxr-x+ 3 iobroker iobroker 4096 Okt 13 10:47 iobroker..yyyy-10-Su.10 -rw-rw-r--+ 1 iobroker iobroker 131 Okt 13 11:00 restart.log ./iobroker..yyyy-10-Su.10: insgesamt 4 drwxrwxr-x+ 2 iobroker iobroker 4096 Okt 13 10:47 13 ./iobroker..yyyy-10-Su.10/13: insgesamt 0 -rw-rw-r--+ 1 iobroker iobroker 0 Okt 13 10:47 2019og
-
Telegram hat wohl mit dem compact mode Probleme:
2019-10-13 16:23:40.533 error ndefined host.Beelink.compactgroup1 2019-10-13 16:23:40.532 error Cannot start telegram.0 in compact mode. Fallback to normal start! : cannot enable cancellation after promises are in use
obwohl er eigentlich aktiv ist:
+ system.adapter.telegram.0 : telegram - enabled, compact enabled (group 1), port: 8443, bind: 0.0.0.0
-
@darkiop sagte in js-controller 2.0 ab sofort im Latest Repo:
Andere Frage, seit wann ist dem im Log die Process ID?
Seit irgendeiner 2.0.x Beta Version
-
@Jan1 Bitte noch paar Logzeilen davor? Ansonsten: Issue bei Telegram bitte und dann am besten compact ausschalten. Scheinbar gibts da einen Fehler im Adapter. Welche Version hast Du?
-
@HelmutS zu 1. interessant. Fix kommt mit einem Update morgen. Oder du versuchst GitHub version ... 2.0.28 dort
Logfile: Hast Du Sonos im Einsatz? Bitte mal GitHub Version installieren. Dann komisches File löschen
-
@apollon77 sagte in js-controller 2.0 ab sofort im Latest Repo:
@Jan1 Bitte noch paar Logzeilen davor? Ansonsten: Issue bei Telegram bitte und dann am besten compact ausschalten. Scheinbar gibts da einen Fehler im Adapter. Welche Version hast Du?
telegram.0 2019-10-13 17:04:27.787 info (25492) starting. Version 1.4.3 in /opt/iobroker/node_modules/iobroker.telegram, node: v10.16.3 host.Beelink.compactgroup1 2019-10-13 17:04:25.057 info instance system.adapter.telegram.0 started with pid 25492 2019-10-13 17:04:25.033 error ndefined host.Beelink.compactgroup1 2019-10-13 17:04:25.033 error Cannot start telegram.0 in compact mode. Fallback to normal start! : require(...) is not a function host.Beelink.compactgroup1 2019-10-13 17:04:25.027 info "system.adapter.telegram.0" enabled host.Beelink 2019-10-13 17:04:25.024 info instance system.adapter.telegram.0 is handled by compact group controller pid 16141 host.Beelink 2019-10-13 17:04:25.023 info "system.adapter.telegram.0" enabled
Telegram 1.4.3
JS Controller 2.0.26 -
@apollon77
Danke
Sonos ist richtig.
Ich habe die GitHub-Version installiert. Bis jetzt sind die Dateien weg.Edit
Aber auch mit 2.0.28 habe ich immer noch das Problem:
2019-10-13 17:47:50.248 - error: host.Nathan uncaught exception: Cannot create property 'mimeType' on string 'image/png' 2019-10-13 17:47:50.249 - error: host.Nathan TypeError: Cannot create property 'mimeType' on string 'image/png' at Object.checkFile (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsUtils.js:171:30) at ObjectsInMemoryServer.checkFile (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemFileDB.js:180:19) at checkFileRights (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsUtils.js:244:13) at ObjectsInMemoryServer.objects.getUserGroup (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsUtils.js:230:13) at ObjectsInMemoryServer.utils.getUserGroup (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemFileDB.js:226:22) at Object.getUserGroup (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsUtils.js:333:25) at ObjectsInMemoryServer.getUserGroup (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemFileDB.js:224:22) at Object.checkFileRights (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsUtils.js:226:17) at ObjectsInMemoryServer.checkFileRights (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemFileDB.js:188:22) at ObjectsInMemoryServer.readFile (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemFileDB.js:433:14)
-
@AlCalzone
0.10.1 läuft.
Ich habe auch beim Zigbee gleich ein Update gemacht..... -
@HelmutS ja. Dazu hatte ich geschrieben das eine neue Version vom Controller, die 2.0.28, das fixen wird.