Ankündigung

Einklappen
Keine Ankündigung bisher.

smarthome.py stürzt ab (II)

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

    #16
    Hi Hendrik,

    Zitat von henfri Beitrag anzeigen
    Hier noch das Plugin:
    minidom hat auch ein memleak.

    Verwende lieber xml.etree.cElementTree, siehe z.B. in plugins/dwd/

    Davon abgesehen, hast Du noch immer ein Problem mit dem Speicher bzw. segfault? Wenn ja, was sagt den ulimit auf der Konsole?

    Bis bald

    Marcus

    Kommentar


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

      Zitat von mknx Beitrag anzeigen
      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.
      So was in der Art habe ich mir zwar gedacht, aber über den großen Sprung war ich doch erstaunt. Dann werde ich das mal weiter beobachten.

      Danke!
      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


        #18
        Hallo,
        Zitat von mknx Beitrag anzeigen
        minidom hat auch ein memleak.

        Verwende lieber xml.etree.cElementTree, siehe z.B. in plugins/dwd/
        Oh mann, python hat aber viele Memleaks!

        Davon abgesehen, hast Du noch immer ein Problem mit dem Speicher bzw. segfault? Wenn ja, was sagt den ulimit auf der Konsole?
        Ja:

        Code:
        Syslog:
        Aug 21 06:44:08 homeserver kernel: [252259.483273] python[22691]: segfault at 26 ip 00007f6a0cfdcf40 sp 00007f6a272514d8 error 4 in libsqlite3.so.0.8.6[7f6a0cfce000+9e000]
        
        sh.py.log
        2013-08-21 06:44:07,934 SmartHome.py DEBUG    Triggering Allgemein.Stromzaehler.Momentanleistung_1min_max - by: KNX source: 1.0.5 dest: 6/7/0 value: {'source': 'Allgeme
        in.Stromzaehler.Count -- scheduler.py:trigger:123
        2013-08-21 06:44:07,942 Allgemein.Stromzaehler.Zaehlerstand DEBUG    Allgemein.Stromzaehler.Zaehlerstand = 322.18375 via Eval Allgemein.Stromzaehler.Counter -- item.py:
        _update:228
        Wieder sqlite.

        Ulimit sagt unlimited.

        Gruß,
        Hendrik

        Kommentar


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

          Scheint an der Berechnung des Zählerstands zu liegen. Vielleicht noch ein Problem mit dem Wert vor einer Minute?!
          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


            #20
            Hi Hendrik,

            kannst Du bitte mal die entsprechende Item-Konfig posten?
            Insbesondere Dein aktuelles eval interessiert mich.

            Danke

            Marcus

            Kommentar


              #21
              Code:
              [Allgemein]
                  sv_page=Allgemein
                  name = Allgemein
                  visu=yes
                  [[Stromzaehler]]
                      [[[Counter]]]
                          name = Counter
                          type = num
                          sqlite = yes
                          knx_dpt = 12
                          knx_send = 6/7/0
                          knx_listen = 6/7/0
                      [[[Zaehlerstand]]]
                          name = Zaehlerstand
                          type = num
                          sqlite = yes
                          knx_dpt = 14
                          knx_send = 6/7/1
                          eval = sh.Allgemein.Stromzaehler.Counter()/800.0
                          eval_trigger = Allgemein.Stromzaehler.Counter
                      sv_widget="{{ plot.period('p99872', 'item', 'avg', '24h') }}"
                      visu=yes
                      [[[Momentanleistung_1min]]]
                          name = Momentanleistung_1min
                          type = num
                          sqlite = yes
                          knx_dpt = 14
                          knx_send = 6/7/2
                          eval = "(sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('avg', '2i', '1i'))/60"
                          eval_trigger=Allgemein.Stromzaehler.Counter
                      sv_widget="{{ plot.period('p99871', 'item', 'avg', '24h') }}"
                      visu=yes
                      [[[Momentanleistung_1min_max]]]
                          name = Momentanleistung_1min_max
                          type = num
                          sqlite = yes
                          knx_dpt = 14
                          knx_send = 6/7/2
                          eval = "(sh.Allgemein.Stromzaehler.Zaehlerstand()- sh.Allgemein.Stromzaehler.Zaehlerstand.db('max', '2i', '1i'))/60"
                          eval_trigger=Allgemein.Stromzaehler.Counter
                      sv_widget="{{ plot.period('p99871', 'item', 'avg', '24h') }}"
                      visu=yes
              Gruß,
              Hendrik

              Kommentar


                #22
                Hallo Marcus,

                kannst du mal gucken, ob du an meiner Config etwas siehst, was die Probleme verursachen könnte?

                Ich hatte heut schon fünf segfaults:
                Code:
                Aug 24 11:16:33 homeserver kernel: [141832.936716] python[27279]: segfault at 26 ip 00007f898db53f40 sp 00007f898effb4d8 error 4 in libsqlite3.so.0.8.6[7f898db45000+9e000]
                Aug 24 12:59:44 homeserver kernel: [148028.281900] python[19746]: segfault at 26 ip 00007fe9c45d7f40 sp 00007fe9c527e4d8 error 4 in libsqlite3.so.0.8.6[7fe9c45c9000+9e000]
                Aug 24 13:00:41 homeserver kernel: [148085.819795] python[23753]: segfault at 26 ip 00007ff013d6bf40 sp 00007ff025caa4d8 error 4 in libsqlite3.so.0.8.6[7ff013d5d000+9e000]
                Aug 24 14:55:41 homeserver kernel: [  971.555385] python[1967]: segfault at 26 ip 00007f9883542f40 sp 00007f98a11004d8 error 4 in libsqlite3.so.0.8.6[7f9883534000+9e000]
                Aug 24 16:12:15 homeserver kernel: [ 5568.613202] python[17828]: segfault at 26 ip 00007f58cdd6df40 sp 00007f58cea144d8 error 4 in libsqlite3.so.0.8.6[7f58cdd5f000+9e000]
                (es wären mehr, wenn ich nach 16:00 sh immer wieder gestartet hätte)
                Mich wundert, dass ich augenscheinlich der Einzige bin. Ich vermute, dass ich in meiner Konfiguration etwas habe, was ungewöhnlich ist.

                Gruß,
                Hendrik

                Kommentar


                  #23
                  Hast Du mal die sqlite-Datenbank überprüft?

                  How to fix corrupt SQLite database - Spiceworks

                  Wenn immer libsqlite den segfault produziert, könnte auch die Datenbank korrupt sein.

                  Ist das die ganze Config? Dann würde ich mal testweise nur DPT12 und danach nur DPT14 probieren.

                  Gruss,

                  der Jan
                  KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                  Kommentar


                    #24
                    Hallo Hendrik,

                    kannst Du mir bitte die DB per Mail schicken? Ich schick Dir gleich ein PM mit meiner Adresse.

                    Ansonsten würde ich die DB löschen. Du folgst ja eh develop, das würde ich noch einmal vorher updaten. Dort ist der Bug bei der Berechnung des avg gefixed und ich empfehle dann eh die DB zu löschen, da ich die alten fehlerhaften Werte nicht korrigieren kann.

                    Mit Deiner DB bau ich dann den integrity check in SH.py. Dann wird das beim starten geprüft.

                    Bis bald

                    Marcus

                    Kommentar


                      #25
                      Danke euch beiden!
                      Ist es die ./var/db/smarthome.db?
                      Bisher hab ich keine PN bekommen.

                      Gruß,
                      Hendrik

                      Kommentar


                        #26
                        Hallo Hendrik,

                        ja, die ist es.

                        Ich hatte vergessen auf den Senden-Button zu klicken :-)

                        Bis bald

                        Marcus

                        Kommentar


                          #27
                          Hallo,

                          'leider' ist die DB in Ordnung, also laut 'pragma integrity_check;'

                          Ich seh mir die DB aber noch mal genauer an.

                          @Hendrik, bitte lösche Deine DB trotzdem einmal und probiere es noch einmal.
                          Wenn es immer noch crasht, poste bitte mal Details zu HW und OS.

                          Bis bald

                          Marcus

                          Kommentar


                            #28
                            Hallo,

                            danke für das checken.
                            Schade...
                            Die Hardware ist ein einfacher Pentium G (Sandy-Bridge); recht neues System (gut, auch schon ein Jahr).
                            Das OS ist Ubuntu 12.04 Server, recht frisch aufgesetzt. Der macht im Wesentlichen Samba, VDR und eben sh/sv.

                            Leider aber direkt nach dem Start wieder ein Crash:
                            Code:
                            root@homeserver:~# grep segfault /var/log/syslog
                            Aug 25 09:57:54 homeserver kernel: [69563.006382] python[1599]: segfault at 24 ip 00007f8827b63614 sp 00007f88389794c8 error 4 in libsqlite3.so.0.8.6[7f8827b49000+9e000]
                            root@homeserver:~# tail /usr/local/smarthome/var/log/smarthome.log
                            2013-08-25 09:54:23 sh.con       INFO     KNX: connected to 127.0.0.1:6720
                            2013-08-25 09:54:23 sh.con       INFO     Squeezebox: connected to 192.168.177.3:9090
                            2013-08-25 09:54:23 Main         INFO     Listen-mode enabled
                            2013-08-25 09:54:34 System       INFO     Threads (7): idle: 4, Main: 1, System: 1, Scheduler: 1
                            2013-08-25 09:54:34 System       INFO     Objects (Top 10): Item: 336, RRD: 217, SQL: 84, WebSocket: 74, KNX: 30, Squeezebox: 29, _MaskedUnaryOperation: 29, _frommethod: 26, _MaskedBinaryOperation: 23, BaseHandler: 16
                            2013-08-25 09:56:03 rrd          WARNING  error updating rrd for Daten.Flur_bei_Rauchmelder: opening '/usr/local/smarthome/var/rrd/Daten.Flur_bei_Rauchmelder.rrd': Datei oder Verzeichnis nicht gefunden
                            2013-08-25 09:56:14 System       INFO     Threads (7): idle: 4, Main: 1, System: 1, Scheduler: 1
                            2013-08-25 09:56:14 System       INFO     Objects (Top 10): Item: 337, RRD: 217, SQL: 84, WebSocket: 74, KNX: 30, Squeezebox: 29, _MaskedUnaryOperation: 29, _frommethod: 26, _MaskedBinaryOperation: 23, BaseHandler: 16
                            2013-08-25 09:57:54 System       INFO     Threads (7): idle: 4, Main: 1, System: 1, Scheduler: 1
                            2013-08-25 09:57:54 System       INFO     Objects (Top 10): Item: 338, RRD: 217, SQL: 84, WebSocket: 74, KNX: 30, Squeezebox: 29, _MaskedUnaryOperation: 29, _frommethod: 26, _MaskedBinaryOperation: 23, BaseHandler: 16
                            Die db hatte ich vorher gelöscht.

                            Gruß,
                            Hendrik

                            Kommentar


                              #29
                              Hm... jetzt läuft es erstmal seit einer Weile.

                              Einzige Änderung:
                              habe auch die smarthome.db-journal gelöscht.

                              Mal abwarten.

                              Kommentar


                                #30
                                Hallo Hendrik,

                                schön das es läuft. Du wirst das sicher weiter in Auge behalten und melden, wenn etwas nicht klappt.
                                Ich habe ein paar Änderungen am SQLite Plugin vorgenommen die die DB robuster machen sollte.

                                Was mir bei Deinem Logfile aufgefallen ist, das die Anzahl der Item-Obejkte ansteigt.

                                Die Anzahl der Objekte muss stabil sein. Wenn einzelne Objekte ansteigen, dann liegt ein Fehler vor. Leider kann ich Dir nicht spontan sagen woran es liegt. Es scheint ein Plugin oder eine Logik macht da etwas falsch.
                                Der Object-Counter zählt die Referenzen auf einzelne Objekte. Wenn die Anzahl stetig steigt, dann steigt auch der Speicherverbrauch stetig.

                                Bis bald

                                Marcus

                                Kommentar

                                Lädt...
                                X