Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenHab instabil, Java OutOf Memory ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    OpenHab instabil, Java OutOf Memory ?

    Hallo zusammen,

    Ich hab ein sonderbares Verhalten von OpenHAB/Java. Es läuft nach einem Neustart für ein 1-3 Tage wunderbar und dann ist aber irgendwann Schluss.

    Anbei hab ich mal ein Auszug vom Log von der Stelle wo es abgestürzt ist angehängt.

    Ich betreibe das auf meiner QNAP NAS in einer VM mit einer Debian GNU/Linux 7 Distribution . Das Linux kann ich trotz Absturz noch Problemlos via Putty oder winSCP erreichen.

    Nach einem Neustart geht aller wieder einwandfrei.... für wie gesagt 1-3 Tage dann bam :-(

    vielleicht hat ja einer eine Schlaue Idee? Wäre super.....

    Grüsse
    bkumio

    Anbei auch noch mal meine Java Version :
    java version "1.6.0_33"
    OpenJDK Runtime Environment (IcedTea6 1.13.5) (6b33-1.13.5-2~deb7u1)
    OpenJDK Client VM (build 23.25-b01, mixed mode, sharing)

    Auszug aus dem Code
    Code:
    2015-01-04 05:07:52.278 [WARN ] [tuwien.auto.calimero          ] - [KNXnet/IP receiver] KNXnet/IP Tunneling 192.168.1.34:3671: skipped tunneling request with rcv-seq 151
    2015-01-04 05:07:53.343 [WARN ] [org.eclipse.jetty.io.nio      ] - 
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:07:53.344 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/00
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:09:13.919 [ERROR] [.s.container.ContainerResponse] - The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:09:32.771 [WARN ] [org.eclipse.jetty.io.nio      ] - handle failed
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:09:34.337 [WARN ] [e.jetty.servlet.ServletHandler] - Error for /rest/sitemaps/hausGreenT/hausGreenT
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:09:39.564 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/hausGreenT
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:09:43.214 [WARN ] [org.eclipse.jetty.io.nio      ] - handle failed
    2015-01-04 05:30:09.618 [WARN ] [e.jetty.servlet.ServletHandler] - Error for /rest/sitemaps/hausGreenT/05
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:30:12.221 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/05
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:32:25.375 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/05
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:39:47.469 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/00
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:40:00.990 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/05
    java.lang.OutOfMemoryError: Java heap space
    2015-01-04 05:40:04.635 [WARN ] [.server.AbstractHttpConnection] - /rest/sitemaps/hausGreenT/05
    java.lang.OutOfMemoryError: Java heap space

    #2
    habe das gleiche Verhalten.
    Wenn ich mehr Memory freischaufele, weniger Dienste usw. dann dauert es länger. Wenn das Memory ohnehin knapp ist, dann schneller.

    Kommentar


      #3
      solch ein Verhalten kann an den verwendeten Addons liegen! Welche Erweiterungen nutzt Ihr denn konkret? Darüber hinaus solltet Ihr nur das Oracle JDK verwenden. Mit den OpenJDKs wurden immer wieder mal die OOMs berichtet.

      Gruß,

      Thomas E.-E.
      Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

      Kommentar


        #4
        Hallo Thomas,

        in meinem Fall:
        org.openhab.binding.exec-1.6.1.jar
        org.openhab.binding.fritzbox-1.6.1.jar
        org.openhab.binding.http-1.6.1.jar
        org.openhab.binding.knx-1.6.1.jar
        org.openhab.binding.koubachi-1.6.1.jar
        org.openhab.binding.samsungtv-1.6.1.jar

        Ich könnte mal alle bis auf KNX abschalten und das mal ne Woche oder so laufen lassen.

        Ich bin kein Linux Spezialist. Ich hab das System "einfach" von einem ISO file mit der Installations GUI installiert. Könntest du mit ein hint geben wie ich von OpenJDKs auf Oracle JDK "zurück wechseln" kann.

        gibt's da was wie apt -delete... ? Und muss ich dann in den startup scripts was anpassen? Wobei ich meinte da gesehen zu haben das da zuerst der Java path ermittelt wird und dann dies in einer variable gespeichert wird.

        Merci für eine Antwort
        Bkumio

        Kommentar


          #5
          Soviel vorab. Meine java Zeit ist bereits einige Jährchen her, openhab und die hier verwendete JVM kenne ich nicht.

          Ich würde trotzdem drauf wetten, dass das kein Speicherproblem ist. Bei den alten JVMs bekam man out of memory durchaus nicht nur bei out of memory, sondern auch wenn man in andere Limits gerannt ist. Z.B. open file handles. Die failures gibt es hier immer im Kontext eines http Requests oder anderem io, schau doch mal mit netstat -a was da an offenen Sockets hängt. Und mit lsof was an Datei handles auf ist. Evtl. war einer so klug ein close auf ein io durch die Garbage Collection erledigen zu lassen. Dann bleiben die ios offen und Linux sagt irgendwann beim öffnen: Nix is.

          Zusätzlich mal prüfen wie die Limits gesetzt sind, besonders IO und zur Sicherheit wie die Heapsize konfiguriert ist. Früher waren das -Xms und -Xmx (meine ich) Optionen um mehr als den Standard benutzen zu können.

          Kommentar


            #6
            Hallo Thomas,

            Mein OPENHAB Model:
            Addons: 16.
            Mail, Prowl, Astro, Exec, Fritzbox, homematic, http, openpaths, sonos, weather, wol, gcal, tts.marytts, myopenhab und 2
            Persistence Service: Logging (2 items), Rrd4j (37 items)
            Items: 516 lines of code, ca. 300-350 items, davon ca. 80% mit Bindings
            Rules: 1942 lines of code in 5 rule files und 82 rules
            Sitemaps:353 loc in 3 files
            Map files: 13 files
            OS: Windows 8.1 mit nur 1 GB Hauptspeicher! Java 8 Oracle.

            Im Dezember hatte ich 5 Abstürze. Durchschnittliche Uptime von nur 5 Tagen.

            Mein Log File sieht - so weit ich das beurteilen kann - eigentlich ganz gut aus.
            1. der Fritzbox Mitternachtsfehler
            2. Manchmal temporäre Myopenhab Ausfälle
            3. Sonos Warnings bzgl. Verfügbarkeit des Service
            4. OPENPATHS temporär fehlende Verfügbarkeit.
            5. Außerdem bin ich von "Get FileNotFoundException for one or two rule files when openHAB starts up #736" betroffen, aber es scheint, dass unter Windows, die Rule Files dann noch irgendwann geladen werden.

            Liebe Grüße Martin

            Kommentar


              #7
              Hast du es mal mit einem Oracle Java 1.7 versucht?
              Auf meinem Pi läuft das so sehr stabil... und der hat ja wirklich nicht so viel Speicher.

              Kommentar


                #8
                ich hab jetzt mal meine Debian VM auf Java Version 8 mit Hilfe folgender Anleitung gebracht.

                How To Install Oracle Java 8 In Debian Via Repository [JDK8] ~ Web Upd8: Ubuntu / Linux blog

                Mal beobachten wie es sich verhält. Ansonsten mach ich mal Was Thomas vorgeschlagen hat und deaktiviere all Plug-Ins ausser das KNX.

                Ach ja
                • Rules: 320 lines of code in 8 rule files und 21 rules
                • Items: 330 lines of code, ca. 250 items, davon ca. 90% mit KNX Bindings der rest mit koubachi und wunderground.
                • Sitemaps: 2 x 330 lines, mit den gleichen Einträgen, einmal ClassicUI , einmal GreenT
                • Transformations xsl : 60 stück für Wunderground


                das einzige was mir im log noch so auffällt sind die hunderte Lines von
                Code:
                2015-01-04 10:38:46.200 [ERROR] [o.i.r.i.f.SendPageUpdateFilter] - null
                Ansonnsten die gleiche Geschichten wie der Fritzbox und glücklicherweise keine FileNotFoundException fehler....

                Also ich beobachte mal ob Java 1.8 ne Besserung bringt. Hat einer ne Idee was diese SendPageUpdateFilter Fehler sind ?

                bkumio

                Kommentar


                  #9
                  Zitat von bkumio Beitrag anzeigen
                  Mal beobachten wie es sich verhält. Ansonsten mach ich mal Was Thomas vorgeschlagen hat und deaktiviere all Plug-Ins ausser das KNX.
                  Ich wette immer noch auf ein Limit für die Anzahl offener File Deskriptoren. Was sagt den ulimit -n für den Benutzer unter dem die JVM läuft? Hast Du mal lsof aufgerufen direkt nach Neustart und wenn die Kiste kracht?
                  Code:
                  lsof | grep java | wc -l
                  sollte Dir direkt die Anzahl offener Dateien für java geben

                  Kommentar


                    #10
                    Hi,

                    Zitat von bkumio Beitrag anzeigen
                    Also ich beobachte mal ob Java 1.8 ne Besserung bringt. Hat einer ne Idee was diese SendPageUpdateFilter Fehler sind ?
                    die Klasse org.openhab.io.rest.internal.filter.SendPageUpdate Filter steckt im REST Bundle. Mit welchem Client benutzt Du openHAB denn aktuell? Wir hatten in der Vergangenheit (und haben leider teilweise immer noch) Probleme mit dem hier verwendeten Atmosphere Framework dass auch schon für OOMs verantwortlich war.

                    Gruß,

                    Thomas E.-E.
                    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                    Kommentar


                      #11
                      Hallo Thomas,

                      Ich benutze folgende Clients :
                      ---------------------------------------------------------------------
                      1 x Android Handy (Habdroid) via VPN
                      2 x Android Tablet (Habdroid) via WLAN
                      1 x Windows 7 mit Chrome browser (GreenT, oder classicUI) , WLAN/LAN
                      1 x Windows 8 mit CHrome browser (GreenT, oder classicUI), WLAN/LAN
                      1 x iPad (Safari oder Chrome) WLAN
                      1 x Iphone (Chrome) WLAN

                      Das eine Android Tablet läuft eigentlich 24x7 (Das hängt neben der Haustür und zeigt das Mobotix T25 Live Bild als Stream an und dort läuft auch Habdroid immer. Abends beim surfen bin ich meistens zusätzlich mit dem Windows7 (Chrome) Unterwegs und meine Frau eigentlich immer mal wieder mit dem iPAD

                      Meinst du das liegt an den Clients ? Sonst könnte ich auch mal das log löschen, nur das Android Tablet für OpenHAB verwenden und schauen ob das das SendPageUpdate verhalten beeinflusst.....

                      Gruss
                      Mario

                      Kommentar


                        #12
                        Hallo,

                        Ich habe jetzt auf Java 1.7 downgegradet.
                        Das erst, was auffiel, ist, dass ein Regelfile nicht geladen wurde und dieser Zustand dann auch permanent anhielt.
                        Ich habe das File dann mit dem Designer in einem Kommentar geändert und geschrieben, so dass es dann von OPENHAB geladen wurde. Der Mechanismus, der den Filestatus checkt und bei geändertem File, das File neu lädt, scheint wohl noch zu funktionieren.

                        Gibt es so dieses "Touch" script, das wohl ein Workaround für das Nicht-Öffnen von Regeln Files unter Linux ist, auch für Windows?

                        Dann müsste man nur noch einen Hintergrundprozess schreiben, der prüft, ob Java noch läuft und wenn nicht, neu startet.

                        Mit dieser manuellen oben Starthilfe läuft der OPENHAB Server seit ca. 18 h ohne Absturz. Mal sehn wienlange das noch geht.

                        Kommentar


                          #13
                          Anbei mal ein output von den offenen Handles wenn OpenHAB läuft....:

                          Code:
                          root@OpenHAB:~# lsof | grep java | wc -l
                          21514
                          root@OpenHAB:~# ulimit -n
                          1024
                          Dann können wir mal vergleichen wenn OpenHab nicht mehr läuft. Oder aber der Upgrade auf Java 1.8 hat‘s gebracht... jedenfalls läuft schon seit ca. 1 Tag...

                          @klayer:
                          Zu deiner Touch frage unter Windows:
                          ja, du kannst "einfach" im Task scheduler einen neuen sagen wir mal stündlichen Task erstellen bei dem du folgenden Befehl ausführst

                          Code:
                          copy /b <path\rulename> +,,
                          das "+,," lässt die Datei in Ruhe und ändert nur den timestamp :-). Findest du im Technet gut versteckt :-)

                          Gruss
                          bkumio

                          Kommentar


                            #14
                            Ich hatte hier ein kleines Board mit relativ starkem Proc (CortexA8) aber nur 128MB Ram. Bekam das openHAB zum laufen, aber da waren schon nur noch 2-3MB frei. Nach relativ kurzer Zeit (einige Minuten bis 2h) crasht das ganze aber mit Kernelfehler wegen zu wenig RAM.
                            Sind 128MB also zuwenig? Was sind eure Erfahrungswerte mit dem Speicherverbauch?

                            Kommentar


                              #15
                              Hallo,

                              Ich würde nur ungern alle Stunde alle Regeln neu laden lassen.
                              Das sollte nur dann geschehen, wenn im Log File der Fehler auftaucht.
                              Aber trotzdem danke für den Ansatz.
                              Gruß Martin

                              @klayer:
                              Zu deiner Touch frage unter Windows:
                              ja, du kannst "einfach" im Task scheduler einen neuen sagen wir mal stündlichen Task erstellen bei dem du folgenden Befehl ausführst

                              Code:
                              copy /b <path\rulename> +,,
                              das "+,," lässt die Datei in Ruhe und ändert nur den timestamp :-). Findest du im Technet gut versteckt :-)

                              Gruss
                              bkumio[/QUOTE]

                              Kommentar

                              Lädt...
                              X