NEWS
Hilfe! javascript.0 wird mehrfach ausgeführt CPU 100%
-
Hallo Community,
Bis vor ein paar Tagen ging unser Rpi und Iobroker noch wunderbar. Gestern haben wir jedoch gemerkt, dass unserer Raspberry sehr langsam läuft und die Skripte nicht mehr ausgeführt werden weil die Instanz die ganze ZEit angehalten wird.
Bei einen Blick auf den Taskmanager sieht man nichts, aber mit dem Befehl htop wurde dann folgendes ausgespuckt...
Beim ersten mal war dort 7 mal io.javascript.0 aufgeführt....
Jetzt beim "Nachstellen" (wieder aktivieren des Adapters/Instanz) wird das Bild angezeigt.
Wenn man die Instanz im Iobroker pausiert und den Pi rebootet sieht es bei "htop" so aus...

Generelle Info:
Wir müssen ein Projekt für die Uni machen zum Thema IoT und haben deswegen eine smartes Gewächshaus bauen müssen. Wir sind eigentlich Masch.bau.Studenten deswegen haben wir uns alles selbst beibringen müssen ^^
Am Raspberry bzw am ganzen System sind mehrere Relais, Motoren und Sensoren.
Die funktionieren alle super nur diese javascript Instanz macht uns zuschaffen.
Im Iobroker existiert seit neuem auch eine zweite "Instanz?!?!?" vom javascript? Das heißt dann javascript.1, wir wissen aber nicht was das ist und woher das kommt :D

Hat jemand ne Idee oder Lösung?
Abgabe ist leider schon in wenigen Tagen weswegen wir große Neuaufsetzungen oder so Vermeiden wollen würden. -
Hallo Community,
Bis vor ein paar Tagen ging unser Rpi und Iobroker noch wunderbar. Gestern haben wir jedoch gemerkt, dass unserer Raspberry sehr langsam läuft und die Skripte nicht mehr ausgeführt werden weil die Instanz die ganze ZEit angehalten wird.
Bei einen Blick auf den Taskmanager sieht man nichts, aber mit dem Befehl htop wurde dann folgendes ausgespuckt...
Beim ersten mal war dort 7 mal io.javascript.0 aufgeführt....
Jetzt beim "Nachstellen" (wieder aktivieren des Adapters/Instanz) wird das Bild angezeigt.
Wenn man die Instanz im Iobroker pausiert und den Pi rebootet sieht es bei "htop" so aus...

Generelle Info:
Wir müssen ein Projekt für die Uni machen zum Thema IoT und haben deswegen eine smartes Gewächshaus bauen müssen. Wir sind eigentlich Masch.bau.Studenten deswegen haben wir uns alles selbst beibringen müssen ^^
Am Raspberry bzw am ganzen System sind mehrere Relais, Motoren und Sensoren.
Die funktionieren alle super nur diese javascript Instanz macht uns zuschaffen.
Im Iobroker existiert seit neuem auch eine zweite "Instanz?!?!?" vom javascript? Das heißt dann javascript.1, wir wissen aber nicht was das ist und woher das kommt :D

Hat jemand ne Idee oder Lösung?
Abgabe ist leider schon in wenigen Tagen weswegen wir große Neuaufsetzungen oder so Vermeiden wollen würden.@erdkuchen
Auf einem Server läuft kein X, kein VNC und sonstiger GUI-Krempel. -
@erdkuchen
Auf einem Server läuft kein X, kein VNC und sonstiger GUI-Krempel.@thomas-braun sorry, was genau meinst du? Welcher Server? Was soll ich jetzt tun?
-
@thomas-braun sorry, was genau meinst du? Welcher Server? Was soll ich jetzt tun?
@erdkuchen
Zum eigentlichen Problem: Vermutlich in irgendeinem Skript eine Endlosschleife fabriziert. Keine Timeouts gesetzt oder ähnliches.Zum Nebenproblem: Ein Server (insbesondere der kleine Pi) wird ohne Desktop betrieben. Bei dir läuft da der ganze unsinnige Zinnober mit. Ist weder für die Performance noch für die Sicherheit und schon gar nicht für die Stabilität des Systems zuträglich.
-
@erdkuchen
Zum eigentlichen Problem: Vermutlich in irgendeinem Skript eine Endlosschleife fabriziert. Keine Timeouts gesetzt oder ähnliches.Zum Nebenproblem: Ein Server (insbesondere der kleine Pi) wird ohne Desktop betrieben. Bei dir läuft da der ganze unsinnige Zinnober mit. Ist weder für die Performance noch für die Sicherheit und schon gar nicht für die Stabilität des Systems zuträglich.
@thomas-braun ok. Dann aber bei den Skripten im IoBroker und nicht die auf dem Raspberry?! Könnte man es dann lösen in dem man alle Skripte im Iobroker löscht und neu macht und dann dabei darauf achtet Timeouts und keine Endlosschleifen einzubauen?
Sind Skripte ok die nur aktiviert werden wenn sich eine Objekt, Datenpunkt ändern? Oder muss da auch noch ein Timeout oder ähnliches rein?Ah ok. Alles klar. Dann merk ich mir das für die Zukunft. Wir sind halt komplette Anfänger und fanden es deswegen deutlich einfach mit Desktop zuarbeiten als nur über die Konsole.
-
@thomas-braun ok. Dann aber bei den Skripten im IoBroker und nicht die auf dem Raspberry?! Könnte man es dann lösen in dem man alle Skripte im Iobroker löscht und neu macht und dann dabei darauf achtet Timeouts und keine Endlosschleifen einzubauen?
Sind Skripte ok die nur aktiviert werden wenn sich eine Objekt, Datenpunkt ändern? Oder muss da auch noch ein Timeout oder ähnliches rein?Ah ok. Alles klar. Dann merk ich mir das für die Zukunft. Wir sind halt komplette Anfänger und fanden es deswegen deutlich einfach mit Desktop zuarbeiten als nur über die Konsole.
@erdkuchen
Skripte laufen permanent im Hintergrund und lauern auf Trigger. -
@thomas-braun

Hey Thomas, wir sind gerade daran alle Skripte durchzuschauen ob da schleifen oder ähnliches drin ist... Währenddessen haben wir gemerkt, dass unser "htop" weiter unten so aussieht. Ist das normal, dass die Adapter so oft aufgeführt werden oder haben wir ausversehen Iobroker mehrfach installiert?
LG Erdkuchen -
@thomas-braun

Hey Thomas, wir sind gerade daran alle Skripte durchzuschauen ob da schleifen oder ähnliches drin ist... Währenddessen haben wir gemerkt, dass unser "htop" weiter unten so aussieht. Ist das normal, dass die Adapter so oft aufgeführt werden oder haben wir ausversehen Iobroker mehrfach installiert?
LG Erdkuchen@erdkuchen
Das ist grundsätzlich normal, wenn mehrere Child Processes laufen. -
@thomas-braun ok. Dann aber bei den Skripten im IoBroker und nicht die auf dem Raspberry?! Könnte man es dann lösen in dem man alle Skripte im Iobroker löscht und neu macht und dann dabei darauf achtet Timeouts und keine Endlosschleifen einzubauen?
Sind Skripte ok die nur aktiviert werden wenn sich eine Objekt, Datenpunkt ändern? Oder muss da auch noch ein Timeout oder ähnliches rein?Ah ok. Alles klar. Dann merk ich mir das für die Zukunft. Wir sind halt komplette Anfänger und fanden es deswegen deutlich einfach mit Desktop zuarbeiten als nur über die Konsole.
@erdkuchen sagte in Hilfe! javascript.0 wird mehrfach ausgeführt CPU 100%:
@thomas-braun ok. Dann aber bei den Skripten im IoBroker und nicht die auf dem Raspberry?! Könnte man es dann lösen in dem man alle Skripte im Iobroker löscht und neu macht und dann dabei darauf achtet Timeouts und keine Endlosschleifen einzubauen?
Sind Skripte ok die nur aktiviert werden wenn sich eine Objekt, Datenpunkt ändern? Oder muss da auch noch ein Timeout oder ähnliches rein?Ah ok. Alles klar. Dann merk ich mir das für die Zukunft. Wir sind halt komplette Anfänger und fanden es deswegen deutlich einfach mit Desktop zuarbeiten als nur über die Konsole.
Mir ist es am Anfang auch ein paar mal passiert das mein ioBroker auf Vollgas ging weil ich mir im JavaScript eine Schleife gebaut habe.
Es hilft wenn man nebenbei entweder eine SSH-Sitzung zum ioBroker auf hat (oder ein Terminalfenster) und dort dann einfach den JavaScript-Adapter stoppt:iobroker stop javascript.0Alternativ über die Web-Gui den Adapter stoppen. Das könnte etwas zäh sein bis er soweit ist.
Dann konnte ich bisher über die Gui das Skript wieder "stoppen" bzw. auf deaktiviert setzen und habe den Adapter wieder gestartet.
Das ist mir am Anfang ein paar mal passiert, meist wenn mein Script an einem Datenpunkt hängt (Trigger) den ich im Script auch noch selbst beschreibe
aber inzwischen mache ich solche Fehler nicht mehr -
@erdkuchen
Das ist grundsätzlich normal, wenn mehrere Child Processes laufen.@thomas-braun Alles klar Thomas, dann dankeschön hat alles funktioniert :)
-
@erdkuchen sagte in Hilfe! javascript.0 wird mehrfach ausgeführt CPU 100%:
@thomas-braun ok. Dann aber bei den Skripten im IoBroker und nicht die auf dem Raspberry?! Könnte man es dann lösen in dem man alle Skripte im Iobroker löscht und neu macht und dann dabei darauf achtet Timeouts und keine Endlosschleifen einzubauen?
Sind Skripte ok die nur aktiviert werden wenn sich eine Objekt, Datenpunkt ändern? Oder muss da auch noch ein Timeout oder ähnliches rein?Ah ok. Alles klar. Dann merk ich mir das für die Zukunft. Wir sind halt komplette Anfänger und fanden es deswegen deutlich einfach mit Desktop zuarbeiten als nur über die Konsole.
Mir ist es am Anfang auch ein paar mal passiert das mein ioBroker auf Vollgas ging weil ich mir im JavaScript eine Schleife gebaut habe.
Es hilft wenn man nebenbei entweder eine SSH-Sitzung zum ioBroker auf hat (oder ein Terminalfenster) und dort dann einfach den JavaScript-Adapter stoppt:iobroker stop javascript.0Alternativ über die Web-Gui den Adapter stoppen. Das könnte etwas zäh sein bis er soweit ist.
Dann konnte ich bisher über die Gui das Skript wieder "stoppen" bzw. auf deaktiviert setzen und habe den Adapter wieder gestartet.
Das ist mir am Anfang ein paar mal passiert, meist wenn mein Script an einem Datenpunkt hängt (Trigger) den ich im Script auch noch selbst beschreibe
aber inzwischen mache ich solche Fehler nicht mehr@bananajoe Danke, haben wir genauso gehändelt, haben nur nicht die Schleife gefunden ^^ und waren deswegen verwirrt woran es liegt
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden