Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler websocket, Log läuft voll

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

    Fehler websocket, Log läuft voll

    Folgender Fehler tritt sporadisch und ohne sichtbaren Grund auf (erst seit Version 1.8.2):
    Code:
    2021-09-25 15:31:55 ERROR modules.websocket.websocket_server update_item - Error in 'await websocket.send(data)': code = 1001 (going away), no reason
    Traceback (most recent call last):
    File "/usr/local/smarthome/modules/websocket/__init__.py", line 941, in update_item
    await websocket.send(msg)
    File "/home/smarthome/.local/lib/python3.7/site-packages/websockets/legacy/protocol.py", line 471, in send
    await self.ensure_open()
    File "/home/smarthome/.local/lib/python3.7/site-packages/websockets/legacy/protocol.py", line 726, in ensure_open
    raise self.connection_closed_exc()
    websockets.exceptions.ConnectionClosedOK: code = 1001 (going away), no reason
    Diese Meldung hab ich dann mehrmals pro Minute im Log, was dazu führt, dass nicht nur SHNG nicht mehr funktioniert, sondern auch auf dem Server kaum noch was geht. Ist das Problem bekannt? Gibt es eine Lösung dafür?

    #2
    Welches Frontend nutzt Du als Visu und welche Version?

    Gruß
    Wolfram

    Kommentar


      #3
      Hab das Problem bei mir auf dem Image mit nginx auch immer wieder mal, völlig unklar, woher das kommt. Fehler kommt etwa 50 Mal oder so pro Sekunde, irgendwann startet dann shng wieder neu.
      Bin auf aktuellsten develops von sv und shng.

      Kommentar


        #4
        Zitat von wvhn Beitrag anzeigen
        Welches Frontend nutzt Du als Visu und welche Version?
        Ebenfalls SV auf aktuellem develop-Branch.

        Kommentar


          #5
          Bitte gehe mal auf die letzte Master-Version von SV zurück. Ist der Fehler dann weg?
          In der Develop Version haben wir die Initialisierung des Websockets verändert. Vielleicht macht das in bestimmten Konstellationen Probleme

          Kommentar


            #6
            Ich hab jetzt bei mir mal auf Master 3.1 gewechselt. Offenbar hat ihm das nicht so gut gefallen.. gab grad wieder ein Bombardement an diesen Fehlermeldungen. Ich mach mal Reboot und schau, wie sich das entwickelt.
            Das Problem gab's bei mir übrigens schon vor längerer Zeit. Immer wieder mal, aber nur ganz schwer bewusst zu provozieren :'(
            Code:
            Sep 27 23:39:34 ERROR modules.websocket update_log - Error in 'await websocket.send(data)': received 1001 (going away); then sent 1001 (going away)
            Traceback (most recent call last):
            File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
            await websocket.send(msg)
            File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 619, in send
            await self.ensure_open()
            File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
            raise self.connection_closed_exc()
            websockets.exceptions.ConnectionClosedOK: received 1001 (going away); then sent 1001 (going away)

            Kommentar


              #7
              Gibt es Meldungen von SV in der Browser-Konsole, während der Fehler auftritt? Sofern die Funktion autoReconnect aktiviert ist, müsste SV alle 5 Sekunden den „readyState“ prüfen und die Verbindung - falls geschlossen - neu initialisieren. Das wird auf die Konsole ausgegeben.

              ./lib/base/base.js ab Zeile 102
              Code:
              var autoReconnectIntervalId = window.setInterval(function () {
                  // console.log('checking if websocket is alive: state = '+ io.socket.readyState);
                  if(io.socket.readyState == 3) {
                      console.log("WebSocket closed, reconnect...");
                      io.init(address, port);
                  }
              }, 5000;
              Zum Test kann man in Zeile 103 die Kommentarzeichen entfernen, so dass alle 5 Sekunden der readyState ausgegeben wird.

              Ich kenne den Fehler von meinen Installationen (Apache als Webserver, shNG v1.8.2, SV-Version einmal v3.1 / zwei mal develop) nicht. Dass der Webserver eine Rolle spielt, halte ich für unwahrscheinlich, weil das Websocket-Modul ja für seine Zwecke selbst der Server ist. Aber wenn nginx als Reverse Proxy konfiguriert ist, dann muss der Websocket da durch. Kann das eine Ursache sein?

              Gruß
              Wolfram
              Zuletzt geändert von wvhn; 28.09.2021, 07:42.

              Kommentar


                #8
                Ich hab bei mir Reverse Proxy am Start - kann gut sein, dass da der Übeltäter liegt. Ich versuche zu beobachten, beim nächsten Berserker Run mal in die Konsole schauen.

                Kommentar


                  #9
                  Hab grad einen erzwungenen Reboot gehabt, die Fehlermeldungen waren diesmal ein bisschen anders. Keine Ahnung, ob's was bringt.
                  Code:
                  Okt 04 07:33:37 ERROR modules.websocket update_log - Error in 'await websocket.send(data)': no close frame received or sent
                  Traceback (most recent call last):
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 944, in transfer_data
                  message = await self.read_message()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1013, in read_message
                  frame = await self.read_data_frame(max_size=self.max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1089, in read_data_frame
                  frame = await self.read_frame(max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1144, in read_frame
                  frame = await Frame.read(
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/framing.py", line 70, in read
                  data = await reader(2)
                  File "/usr/local/lib/python3.8/asyncio/streams.py", line 721, in readexactly
                  raise exceptions.IncompleteReadError(incomplete, n)
                  asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes
                  
                  The above exception was the direct cause of the following exception:
                  
                  Traceback (most recent call last):
                  File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
                  await websocket.send(msg)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 619, in send
                  await self.ensure_open()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
                  raise self.connection_closed_exc()
                  websockets.exceptions.ConnectionClosedError: no close frame received or sent
                  Okt 04 07:33:37 ERROR modules.websocket update_log - Error in 'await websocket.send(data)': no close frame received or sent
                  Traceback (most recent call last):
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 944, in transfer_data
                  message = await self.read_message()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1013, in read_message
                  frame = await self.read_data_frame(max_size=self.max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1089, in read_data_frame
                  frame = await self.read_frame(max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1144, in read_frame
                  frame = await Frame.read(
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/framing.py", line 70, in read
                  data = await reader(2)
                  File "/usr/local/lib/python3.8/asyncio/streams.py", line 721, in readexactly
                  raise exceptions.IncompleteReadError(incomplete, n)
                  asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes
                  
                  The above exception was the direct cause of the following exception:
                  
                  Traceback (most recent call last):
                  File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
                  await websocket.send(msg)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 619, in send
                  await self.ensure_open()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
                  raise self.connection_closed_exc()
                  websockets.exceptions.ConnectionClosedError: no close frame received or sent
                  Okt 04 07:33:37 ERROR modules.websocket update_log - Error in 'await websocket.send(data)': no close frame received or sent
                  Traceback (most recent call last):
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 944, in transfer_data
                  message = await self.read_message()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1013, in read_message
                  frame = await self.read_data_frame(max_size=self.max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1089, in read_data_frame
                  frame = await self.read_frame(max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1144, in read_frame
                  frame = await Frame.read(
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/framing.py", line 70, in read
                  data = await reader(2)
                  File "/usr/local/lib/python3.8/asyncio/streams.py", line 721, in readexactly
                  raise exceptions.IncompleteReadError(incomplete, n)
                  asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes
                  
                  The above exception was the direct cause of the following exception:
                  
                  Traceback (most recent call last):
                  File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
                  await websocket.send(msg)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 619, in send
                  await self.ensure_open()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
                  raise self.connection_closed_exc()
                  websockets.exceptions.ConnectionClosedError: no close frame received or sent
                  Okt 04 07:33:37 ERROR modules.websocket update_log - Error in 'await websocket.send(data)': no close frame received or sent
                  Traceback (most recent call last):
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 944, in transfer_data
                  message = await self.read_message()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1013, in read_message
                  frame = await self.read_data_frame(max_size=self.max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1089, in read_data_frame
                  frame = await self.read_frame(max_size)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 1144, in read_frame
                  frame = await Frame.read(
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/framing.py", line 70, in read
                  data = await reader(2)
                  File "/usr/local/lib/python3.8/asyncio/streams.py", line 721, in readexactly
                  raise exceptions.IncompleteReadError(incomplete, n)
                  asyncio.exceptions.IncompleteReadError: 0 bytes read on a total of 2 expected bytes
                  
                  The above exception was the direct cause of the following exception:
                  
                  Traceback (most recent call last):
                  File "/usr/local/smarthome/modules/websocket/__init__.py", line 943, in update_log
                  await websocket.send(msg)
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 619, in send
                  await self.ensure_open()
                  File "/home/smarthome/.local/lib/python3.8/site-packages/websockets/legacy/protocol.py", line 920, in ensure_open
                  raise self.connection_closed_exc()
                  websockets.exceptions.ConnectionClosedError: no close frame received or sent
                  Im Details Log gibt's keine weiteren Infos

                  Kommentar


                    #10
                    Leider hab ich obige Fehler doch immer wieder. Soeben hatte ich definitiv keinen Browser mit der Visu offen

                    Kommentar


                      #11
                      Zitat von Onkelandy Beitrag anzeigen
                      Soeben hatte ich definitiv keinen Browser mit der Visu offe
                      Dann kannst Du aber auch keine offene Websocket Verbindung Verbindung gehabt haben, die abnormal beendet wurde.

                      Irgendetwas muss bei Dir eine Websocket Verbindung offen gehabt haben (smartVISU oder Admin Interface bei dem Du die Seite mit den Graphen aufgerufen hattest).
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar


                        #12
                        Admin Interface ja, aber 100% ohne Graph. Wir hatten schon mal den nginx reverse proxy in Verdacht. Vielleicht ist das der Bösewicht..?
                        Code:
                        proxy_connect_timeout 900;
                        proxy_send_timeout 900;
                        proxy_read_timeout 900;
                        Ich hatte das vorher auf 90, da gab es aber auch dauernd die Probleme..

                        Kommentar


                          #13
                          Setz die Timeouts nochmal hoch. Websocket sendet einen Keep-Alive, damit die Verbindung nicht ungeplant abbricht. Falls der jedoch ein größeres Intervall als der Proxy Timeout hat, könnte der Proxy die Verbindung abwürgen. Ich finde jetzt auf die Schnelle nicht, wie das Keep-Alive Intervall beim Websocket ist.

                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            #14
                            Hab mal ne weiter 0 dran gehängt. Diese Parameter könnten noch eine Rolle spielen:
                            proxy_buffers 32 4k;
                            proxy_buffering on;
                            proxy_pass_request_headers on;

                            Letzteres hatte ich aber auch erst jüngst dazu gefügt, weil ich die Probleme hatte

                            Kommentar

                            Lädt...
                            X