[ERLEDIGT] Gladys Plus Dashboard manchmal langsam

Hallo,

Ich habe ein Anzeigeproblem auf dem unten stehenden Dashboard, das regelmäßig auftritt, wenn ich Gladys Plus verwende. Zuerst dachte ich, dass das passiert, wenn der Raspberry nicht über mehrere Wochen neu gestartet wird. Ich habe daher einen wöchentlichen Neustart geplant, aber das Problem ist schnell wieder aufgetreten. Meine andere Hypothese wäre die Langsamkeit meiner Internetverbindung. Haben andere Benutzer dieses Problem?

Die beiden Boxen rechts sollten meine Kameras anzeigen. Das Bild erscheint schließlich nach einigen Dutzend Sekunden, aber die Fehlermeldung bleibt bestehen.

Hallo @Mastho, komisch alles das! Vielleicht tatsächlich ein Problem mit der Internetverbindung, aber nicht unbedingt.

Um dein Problem besser zu verstehen:

  • Welchen Raspberry Pi hast du? Angeschlossen an eine leistungsstarke Micro-SD (oder nicht?)
  • Könntest du uns hier einen Speedtest posten (Raspberry Pi bei dir zu Hause UND die Maschine, auf der du Gladys Plus verwendest)?
  • Wie viele Kameras hast du in deiner Installation? Hast du das Gefühl, dass dein Pi lokal „unter Druck“ steht oder ist er nicht zu stark beansprucht? Welche Auffrischungsfrequenz hast du für die Kameras eingestellt?

Wir werden das gemeinsam debuggen, bis wir es verstehen :smiley: Wenn du Zeit hast, können wir uns auch direkt anrufen, um es gemeinsam live zu sehen.

Nochmals vielen Dank für deine Unterstützung über Gladys Plus :pray:

Hallo @pierre-gilles,

Ich habe einen 3B+, den ich vor fast 2 Jahren gekauft habe, mit einer Micro-SD mit 24 Mo/s.
Ich glaube nicht, dass es ein Problem mit der Leistung gibt, da die Anzeige lokal für die 4 Boxen, die ich derzeit auf dem Dashboard verwende, sofort erfolgt. Ich habe nur diese beiden Kameras mit einem Refresh alle Minute.

Über Gladys Plus habe ich das gleiche Problem, ob ich zu Hause bin oder über 4G von meinem Telefon aus. In den Gladys-Einstellungen habe ich eine Latenz von 66 ms lokal und 1500 ms über Gladys Plus.

Ich sollte am Samstag oder Sonntag Zeit haben, falls du auch verfügbar bist.

Unten ist der Speedtest. Bei der Internet-Box habe ich 16 Mbit/s Downstream für 900 kbit/s Upstream.

Oh, hast du ADSL für deinen Internetanschluss? Bei welchem Anbieter?

Du hast tatsächlich eine sehr schwache Upload-Geschwindigkeit und einen extrem hohen Ping, was die Langsamkeit erklärt, die du beobachtest, aber das erklärt nicht alles. Normalerweise sollte es nur langsamer sein.

Ich bin dieses Wochenende verfügbar, wann immer du willst, um das gemeinsam anzusehen.

Ich kontaktiere dich per Privaten Nachricht.

Achtung Server in Barcelona

@Mastho wohnt im Süden von Frankreich, das ergibt Sinn :slight_smile:

Also, ich habe das nie wirklich gecheckt, was ist die „durchschnittliche Ping-Zeit“ über Gladys Plus?
Ich habe 267 ms mit 4G+, das scheint mir viel zu sein (60 ms lokal).

Fiber + 1 Gb/s LAN + Server mit zwei Xeons, da sollte es bei mir keinen Flaschenhals geben.

267ms ist ausgezeichnet, du hast nichts zu bereuen :smiley:

Tatsächlich könnte das Wort « Ping » hier vielleicht falsch verwendet werden, denn es geht nicht nur um die Netzwerkzeit, sondern auch um die Verarbeitungszeit in dieser Berechnung.

Was berechnet wird, ist die Zeit zwischen:

→ Das Frontend sendet « Ping » an den Gladys Plus-Server
→ Gladys Plus sendet « Ping » an deine Gladys-Instanz
→ Deine Gladys-Instanz antwortet mit « Pong » an den Gladys Plus-Server
→ Gladys Plus antwortet mit « Pong » an den Browser

Also ist der « Ping » hier eher ein « Ping x4 », wobei es bei jedem Schritt einfache Verzögerungen geben kann (deine Gladys-Instanz wird ständig von Sensoren angesprochen, daher wird sie nicht unbedingt sofort mit « Pong » antworten, usw.).

267ms bei dir ist einfach ausgezeichnet für all das :slight_smile:

Bei dir hast du 60ms, weil der Ping einfach ein « Ping » zu deiner Maschine im lokalen Netzwerk ist.

ADSL bei Sosh. Aber selbst bei ADSL ist die Latenz für einige Pings immer noch sehr hoch.

Ich zeige dir alles und wir machen ein paar Tests :slight_smile:

Wir haben uns gerade mit @Mastho beraten, um zu untersuchen, und es ist kein Netzwerkproblem, sondern ein lokales Problem auf seiner Gladys-Instanz :slight_smile: Das ist eine gute Nachricht, denn beim Netzwerk kann man nichts machen, aber ein lokales Problem lässt sich beheben!

Beim Betrachten seiner Logs haben wir viele « DATABASE_IS_LOCKED SQLITE_BUSY » beim Einfügen der Standortdaten gesehen, und meiner Meinung nach liegt das Problem in dieser Transaktion: Gladys/server/lib/location/location.create.js at master · GladysAssistant/Gladys · GitHub

Interessant ist, dass das Problem nach einem Neustart von Gladys nicht mehr auftrat und Gladys Plus problemlos funktionierte.

Die Verwendung einer Transaktion kann zu einem Deadlock führen, und ich frage mich, ob das hier nicht der Fall ist.

Meiner Meinung nach ist die Transaktion hier nicht unbedingt sinnvoll und kann entfernt werden. Besonders wenn Gladys auf Micro-SD-Karten verwendet wird, die eher mittelmäßige Lese-/Schreibleistungen haben, ist eine Transaktion schwerwiegend und legt alle anderen Schreibvorgänge in die Warteschlange (SQLite im WAL-Modus unterstützt nur einen Schreibvorgang gleichzeitig).

Das ist genau das gleiche Problem, das ich auch regelmäßig hatte, und zwar mit

et dem Problem mit dem Verlust von Gladys Plus. Super, wenn das behoben werden könnte!!

@Terdious hast du das Problem immer noch, seit du auf SSD bist?

Immer noch das Zugriffsproblem, ja!!



Trotzdem bin ich auf dieser Seite gut

Aber keine Logs hier:

ah Mist! Deine Logs zeigen nichts Besonderes (ich sehe CalDAV, aber alles scheint gut zu laufen), ist das das richtige Screenshot?

Ja, das ist genau das Richtige!! Es ist sogar so, als ob er gar nicht erst versucht, sich zu verbinden!!

Ok, ich habe es lokal getestet und tatsächlich Probleme mit den Transaktionen gefunden, die wir verwenden. Offensichtlich gab es Fehler, sobald es Konkurrenz gab. Ich frage mich, ob die Version von Sequelize, die wir verwenden, auch hier Probleme hat. Wir müssen daran denken, Sequelize zu aktualisieren…

Ich habe einen PR erstellt, der diese fehlerhaften Transaktionen entfernt und Konkurrenztests hinzufügt, und jetzt funktioniert es viel besser:

Neu:


Ich habe nichts mehr, obwohl der Cursor lokal in Ordnung ist ^^
Keine Möglichkeit, von hier aus zur Anmeldeseite zurückzukehren ^^

Hallo,

Kurze Rückmeldung von mir:

  • Installation von Gladys auf einem Raspberry (mit der Installation, die du angibst), es ist kein Dienst konfiguriert
  • Konfiguration von Gladys Plus

Ich habe Glasfaser, Raspberry Pi 4 mit einer SSD (ok auf USB2, aber trotzdem).

Ich habe Pings von 600 ms … Keine Datenbank ist gesperrt. Ich bin mir nicht sicher, ob das der Grund ist. :confused:

Super seltsam, ich werde versuchen, den Fix noch heute zu pushen!

Ich sehe das Problem nicht, das ist eine gute Zahl :slight_smile: Wie oben erklärt, ist das kein Ping!

Wenn euch diese Zahl alle so sehr stresst, werde ich sie entfernen, sie verursacht mehr Probleme als sie löst, wie ich sehe ^^

@damalgos nach unserem Telefonat heute Morgen habe ich recherchiert, und du hattest recht: 600 ms sind nicht normal :smiley:

Schon auf der Seite des Gladys-Gateway-Servers habe ich einige Optimierungen vorgenommen, die aber die Situation nicht wesentlich verbessern.

Das eigentliche Problem liegt bei diesem berühmten « getUserById », das lokal zu Gladys gehört und für jede Anfrage einen DB-Aufruf macht, was zu DB-Blockaden führen kann. Ich habe Blockaden von 700 ms bei mir lokal festgestellt, obwohl ich auf einem Mac mit einer SSD der Zukunft sitze…

Dieser DB-Aufruf ist nicht notwendig. Wenn man ihn durch einen RAM-Aufruf ersetzt (dank des « stateManager »), komme ich auf 55 ms, das ist viel besser und entspricht mehr dem, was man von einer Anfrage erwartet.

Hier ist der Beweis: (das ist nicht lokal)

Für diejenigen, die es interessiert, hier sind einige Statistiken über die Zeit für jeden Schritt einer Anfrage über Gladys Plus:

Die Zeile, die Probleme verursacht hat, war « getting-local-user », und jetzt dauert es 0,009 ms, viel optimierter :ok_hand:

Ich mache weiter mit den Optimierungen, um zu sehen, ob wir nicht noch weiter gehen können.