Ankündigung

Einklappen
Keine Ankündigung bisher.

smarthome.py stürzt ab (II)

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

    smarthome.py stürzt ab (II)

    Hallo,

    ich mache mal einen eigenen Thread auf:
    Auch bei mir crasht sh.py hier und da:
    Code:
    /root/sh.dbg: Zeile 2: 25185 Speicherzugriffsfehler  (Speicherabzug geschrieben) /usr/local/smarthome/bin/smarthome.py -n -d > /var/log/smarthome_dbg.txt 2>&1
    Code:
    cat /root/sh.dbg
    /usr/local/smarthome/bin/smarthome.py --stop
    /usr/local/smarthome/bin/smarthome.py -n -d > /var/log/smarthome_dbg.txt 2>&1
    Wo wird denn der Speicherabzug geschrieben?

    Ich habe gerade mal geguckt: In meiner Wetter-Logik findet sich noch der Aufruf "import urllib2" - genutzt wird sie aber nicht, sondern sh.fetchurl (zweimal pro Stunde)



    Gruß,
    Hendrik

    #2
    Das riecht eher nach Rechnerproblemen. Was steht denn im Syslog?

    Max

    Kommentar


      #3
      Hi Hendrik,

      mit den vorliegenden Informationen glaube ich nicht an ein Fehler von SH.py.

      Ich glaube das Problem liegt an dem Script bzw. an der redirection oder an dem Speicher des Rechners.

      Was sagt denn das SH.py Log als letztes? Wie groß ist es?

      Wieso verwendest Du nicht
      "smarthome.py -d" und nimmst das Log var/log/smarthome.log (inkl. Debugausgaben)?

      Du könntest mal einen Blick auf https://knx-user-forum.de/smarthome-...-auslesen.html werfen, oder mit einem Monitoring Tool den Speicherverbrauch beobachten.
      Welche SH.py Version setzt Du eigentlich ein?

      Bis bald

      Marcus

      Kommentar


        #4
        Zitat von l0wside Beitrag anzeigen
        Das riecht eher nach Rechnerproblemen. Was steht denn im Syslog?
        Code:
        Aug 20 19:30:10 homeserver kernel: [211786.934681] python[720]: segfault at 26 ip 00007f1d4e743f40 sp 00007f1d4e7324d8 error 4 in libsqlite3.so.0.8.6[7f1d4e735000+9e000
        ]
        Zitat von mknx Beitrag anzeigen
        mit den vorliegenden Informationen glaube ich nicht an ein Fehler von SH.py.

        Ich glaube das Problem liegt an dem Script bzw. an der redirection oder an dem Speicher des Rechners.
        Meinst du?!
        Ich kann es auch mal ohne probieren.

        Was sagt denn das SH.py Log als letztes? Wie groß ist es?
        92K:
        Code:
        2013-08-20 19:30:04,919 wunderground DEBUG    temp_c -- wunderground.py:<module>:33
        2013-08-20 19:30:07,621 wunderground DEBUG    19.0 -- wunderground.py:<module>:35
        2013-08-20 19:30:07,621 wunderground DEBUG    precip_today_metric -- wunderground.py:<module>:33
        2013-08-20 19:30:09,638 SmartHome.py DEBUG    knx: 1.0.5 set 6/7/0 to 252946 -- __init__.py:parse_telegram:196
        2013-08-20 19:30:09,686 SmartHome.py DEBUG    Allgemein.Stromzaehler.Counter = 252946 via KNX 1.0.5 -- item.py:_update:228
        2013-08-20 19:30:09,976 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Zaehlerstand - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgemein.Stromzaehler.Count -- scheduler.py:trigger:123
        2013-08-20 19:30:09,977 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Momentanleistung_1min - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgemein.Stromzaehler.Count -- scheduler.py:trigger:123
        2013-08-20 19:30:09,977 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Momentanleistung_1min_max - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgemein.Stromzaehler.Count -- scheduler.py:trigger:123
        2013-08-20 19:30:10,116 Allgemein.Stromzaehler.Zaehlerstand DEBUG    Allgemein.Stromzaehler.Zaehlerstand = 316.1825 via Eval Allgemein.Stromzaehler.Counter -- item.py:_update:228
        2013-08-20 19:30:10,196 SmartHome.py DEBUG    knx: 0.0.0 set 6/7/1 to 43 9e 17 5c -- __init__.py:parse_telegram:187

        Wieso verwendest Du nicht
        "smarthome.py -d" und nimmst das Log var/log/smarthome.log (inkl. Debugausgaben)?
        Ich wusste nicht, dass das geschrieben wird :-( Edit: Wird es nicht. Vermutlich ein Rechte-Problem? Ah... Vielleicht /usr/local/smarthome/var/log/smarthome.log. Daran muss ich mich gewöhnen...

        Du könntest mal einen Blick auf https://knx-user-forum.de/smarthome-...-auslesen.html werfen, oder mit einem Monitoring Tool den Speicherverbrauch beobachten.
        Wird gemacht

        Welche SH.py Version setzt Du eigentlich ein?
        Die Develop von Gestern.

        Gruß,
        Hendrik

        Kommentar


          #5
          Hi Hendrik,

          Zitat von henfri Beitrag anzeigen
          Meinst du?!
          jetzt nicht mehr, jetzt habe ich mehr Informationen.

          Das könnte evtl. ein Speicherproblem sein. Mich würde der Speicherverbrauch, Objekte, und Threads über ein paar Stunden interessieren. Evtl. mit meinem Script.

          Bis bald

          Marcus

          Kommentar


            #6
            Ok, danke.
            Das Skript läuft.
            Wie schicke/exportiere ich dir die Daten?

            Gruß,
            Hendrik

            Kommentar


              #7
              Hi Hendrik,

              das parse ich mir aus dem Logfile. Den Speicherverbrauch gerne auch als Screenshot des smartVISU-Plots.

              Danke

              Marcus.

              P.S. wenn Du magst, dann kannst Du mir auch das Logfile per Mail schicken.

              Kommentar


                #8
                Hallo,

                der nächste Absturz:
                Code:
                2013-08-20 20:53:07,138 System       DEBUG    Load: 0.77, 1.09, 0.98 -- system.py:<module>:50
                2013-08-20 20:53:07,138 System       DEBUG    system.load = 1.09 via Logic None -- item.py:_update:228
                2013-08-20 20:53:07,252 Scheduler    DEBUG    System next time: 2013-08-20 20:58:07+02:00 -- scheduler.py:_next_time:245
                2013-08-20 20:53:07,335 System       DEBUG    smarthome.memory = 30236672 via Logic None -- item.py:_update:228
                2013-08-20 20:53:07,387 SmartHome.py DEBUG    knx: 1.0.5 set 6/7/0 to 253724 -- __init__.py:parse_telegram:196
                2013-08-20 20:53:07,387 SmartHome.py DEBUG    Allgemein.Stromzaehler.Counter = 253724 via KNX 1.0.5 -- item.py:_update:228
                2013-08-20 20:53:07,502 System       DEBUG    system.memory = 83 via Logic None -- item.py:_update:228
                2013-08-20 20:53:07,703 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Zaehlerstand - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgemein.Stromzaehler.Count -- scheduler.py:trigger:123
                2013-08-20 20:53:07,703 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Momentanleistung_1min - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgemein.Stromzaehler.Count -- scheduler.py:trigger:123
                2013-08-20 20:53:07,704 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Momentanleistung_1min_max - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgemein.Stromzaehler.Count -- scheduler.py:trigger:123
                2013-08-20 20:53:07,754 Allgemein.Stromzaehler.Zaehlerstand DEBUG    Allgemein.Stromzaehler.Zaehlerstand = 317.155 via Eval Allgemein.Stromzaehler.Counter -- item.py:_update:228
                2013-08-20 20:53:07,755 SmartHome.py DEBUG    knx: 0.0.0 set 6/7/1 to 43 9e 93 d7 -- __init__.py:parse_telegram:187
                2013-08-20 20:53:07,917 System       DEBUG    system.uptime = 2d 12h 9m via Logic None -- item.py:_update:228
                Speicherzugriffsfehler (Speicherabzug geschrieben)
                Code:
                Aug 20 20:53:08 homeserver kernel: [216769.008014] python[27743]: segfault at 26 ip 00007f534dd3ff40 sp 00007f534e9e64d8 error 4 in libsqlite3.so.0.8.6[7f534dd31000+9e000]
                Sqlite...

                Das Log hängt an.

                Gruß,
                Hendrik
                Angehängte Dateien

                Kommentar


                  #9
                  smarthome.py stürzt ab (II)

                  Könnte dazu passen, deswegen häng ich mich mal mit ran. Das sqlite Plugin (bin mir ziemlich sicher, dass es daran liegt) hat letzte Nacht auch bei mir sein unwesen getrieben (siehe Screenshots). Habe gerade nen Pull gemacht und Änderungen im Plugin gesehen... mal sehen, was es heute Nacht macht.

                  https://www.dropbox.com/s/o8i6frovql...%2045%2040.png

                  https://www.dropbox.com/s/ki7tj447rk...%2052%2003.png

                  EDIT: das Log habe ich zusammengefasst. Kann leider keins zippen und hochladen aus dem Urlaub.
                  Mit freundlichen Grüßen
                  Niko Will

                  Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                  - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                  Kommentar


                    #10
                    Hi Niko,

                    bei Dir schein es kein 'Problem' zu geben. Das sieht nach der Pack-Routine aus, die um 03:02 jede Nacht läuft und die DB eindampft.

                    Wie groß ist denn Deine DB-File (var/db/smarthome.db)?

                    Bis bald

                    Marcus

                    Kommentar


                      #11
                      Hi Hendrik,

                      danke für die Informationen.

                      Du hast mindestens ein Problem mit offenen xml.dom.minidom Objekten.
                      Suche mal in dem Logfile nach 'WARNING Garbage'.
                      Deaktiviere bitte mal die wunderground Logik/Plugin, da sie viel Müll hinterlässt.
                      Du hast auch eine steigende Anzahl von Objekten. 'Text' und 'Element' steigen in dem Betrachtungszeitraum massiv an. Ich glaube das gehört auch zu xml Zeugs.

                      Erhöhe bitte mal die Frequenz der System-Logik um mehr Datenpunkte zu bekommen. So alle 300 Sekunden.
                      Prüfe bitte einmal ob es immer noch crasht.

                      Bis bald

                      Marcus

                      Kommentar


                        #12
                        smarthome.py stürzt ab (II)

                        Hi Marcus,

                        und das der Speicherverbrauch danach so hoch bleibt ist normal?

                        Zitat von mknx Beitrag anzeigen
                        Wie groß ist denn Deine DB-File (var/db/smarthome.db)?
                        15346688 Bytes
                        Mit freundlichen Grüßen
                        Niko Will

                        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                        Kommentar


                          #13
                          Zitat von mknx Beitrag anzeigen
                          Du hast mindestens ein Problem mit offenen xml.dom.minidom Objekten.
                          Suche mal in dem Logfile nach 'WARNING Garbage'.
                          Da ist nix zu finden -auch in den anderen logfiles nicht.

                          Deaktiviere bitte mal die wunderground Logik/Plugin, da sie viel Müll hinterlässt.
                          Erledigt.
                          Erhöhe bitte mal die Frequenz der System-Logik um mehr Datenpunkte zu bekommen. So alle 300 Sekunden.
                          Prüfe bitte einmal ob es immer noch crasht.
                          Wird gemacht. Zyklus war schon 300. Jetzt 100.

                          Noch ein Hinweis, den ich in den letzten drei Posts schreiben wollte, aber immer wieder vergessen habe:
                          Ich habe momentan das 1w-Plugin auskommentiert (in der plugin.conf), dennoch aber die Items noch drin. Kann es damit zusammenhängen?

                          Gruß,
                          Hendrik

                          P.S:
                          Hier noch das Plugin:
                          Code:
                          cat  /usr/local/smarthome/logics/wunderground.py
                          #!/usr/bin/python
                          #!/usr/bin/python
                          
                          from xml.dom import minidom
                          #import urllib2
                          
                          
                          
                          
                          def get_current_weather_data(xml, name):
                             import re
                             non_decimal = re.compile(r'[^\d.]+')
                             for node in xml.getElementsByTagName(name):
                                v=node.childNodes[0].nodeValue
                                for i in xrange(1000000):
                                   w=non_decimal.sub('', v)
                                if v.find('%')>0:
                                   w=w/100
                             return w
                          
                          
                          #response= urllib2.urlopen('http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=INIEDERS60')
                          #response= urllib2.urlopen('http://api.wunderground.com/api/13f6a0e88a00bfa5/conditions/forecast/astronomy/lang:DL/q/Germany/Bremen.xml')
                          #xml=response.read()
                          
                          xml = sh.tools.fetch_url('http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=INIEDERS85')
                          xml=minidom.parseString(xml)
                          
                          #xml=minidom.parse("wetter.xml")
                          
                          for item in sh.aktuelles_wetter:
                           if item.conf['xmlstring']:
                             logger.debug(item.conf['xmlstring'])
                             item(get_current_weather_data(xml,item.conf['xmlstring']))
                             logger.debug(get_current_weather_data(xml,item.conf['xmlstring']))
                           else:
                             logger.debug('xmlstring is empty')
                             logger.debug(item.conf['xmlstring'])
                          
                          #relative_humidity=get_current_weather_data(xml,'relative_humidity')
                          #print(relative_humidity)

                          Kommentar


                            #14
                            Hi Hendrik,

                            die Forensoftware hat die Spaces unterschlagen.
                            Es steht z.B. in Zeile 6866 Deines Logfiles.

                            Die Itemattribute spielen keine Rolle wenn kein Plugin da ist.

                            Deine Plugin/Code kann ich mir erst morgen oder übermorgen ansehen.

                            Bis bald

                            Marcus

                            Kommentar


                              #15
                              Hi Niko,
                              Zitat von 2ndsky Beitrag anzeigen
                              und das der Speicherverbrauch danach so hoch bleibt ist normal?
                              Python gibt freien Speicher nicht zwangsläufig an das System zurück.
                              Er wird allerdings intern wiederverwendet.
                              Der Speicherverbrauch von SH.py sollte sich nach 1-2 Tagen stabilisiert haben.

                              Siehe auch: Why doesn't Python release the memory when I delete a large object?

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X