Suite Bug Backup Gladys Plus -> Globaler Bug Gladys

Hallo @pierre-gilles,

Nun, ich bin leid, ich komme mit « schlechten » Nachrichten zurück, die Performance-Probleme sind immer noch vorhanden und immer mit derselben Ursache: Ressourcen, die durch das Backup der Datenbank belegt werden. Dies äußert sich immer noch in einem Verlust des Zugriffs auf Gladys für 4/5 Minuten alle 30 Minuten, sehr unregelmäßige Gladys-Plus-Backups, dauerhafte Fehler bei der Aggregation. Das geht jetzt etwa 2 Monate so (Backup über 750 Mo?).

htop

DB-Größe auf dem Pi

DB-Größe auf Gladys Plus + Backup-Historie

Fehler der Aufgaben bei blockiertem DB-Zugriff

Zur Erinnerung, meine Konfiguration (mit SSD)


Bearbeitung:

Container-Status

image

Logs vor, während und nach dem Absturz







Ich dachte, du hättest Maßnahmen ergriffen, um zu verhindern, dass es zu DB-Zugriffsproblemen während des Backups kommt. Gibt es hier eine Regression? Oder liege ich falsch?

Nach deinem letzten Video hat mich das motiviert, den solarer Programmteil mit Node Red wieder aufzunehmen. Ich habe also viele zusätzliche Daten zu integrieren (Produktion auf 3 Phasen + Summe / Verbrauch auf 3 Phasen und 3 Parks + Summe / Unterschiede zwischen den beiden). Das sind etwa 72 Features, darunter 12 Werte alle 30 Sekunden, 24 Werte alle 1 Stunde, 12 Werte täglich, 12 Werte monatlich und 12 Werte jährlich. Das bereitet mir ein wenig Sorgen für die Zukunft. Gibt es eine Möglichkeit, das Backup zu deaktivieren? Mein SSD könnte diese Daten problemlos verwalten, ich würde gerne eine interne Sicherung durchführen, wenn nur Gladys Plus das Problem ist.
Zur Info, ich bin auf dem Land, ich nutze 3 Internetnetzwerke (Satellit Starlink als Priorität, Free 4G als Sekundär und Free ADSL - 512 Ko als Backup), die jeweils regelmäßig ausfallen. Aber die Starlink-Geschwindigkeit ist ausgezeichnet (120 Mbit/s im Durchschnitt). Kann ein Internetausfall während des Backups das Problem erklären?

Vielen Dank im Voraus.

Ich habe das Gefühl, dass er die DB ständig sichert … das sollte normalerweise einmal täglich passieren, oder? Denn vor 20 Minuten war die Datei in /var/lib/gladysassistant/backups/ « gladys-db-backup-2022-3-23-7-38-31.db.gz » und jetzt « gladys-db-backup-2022-3-23-7-53-52.db » also 2 Backups in weniger als 15 Minuten…

Ich versuche gerade, die DB wiederherzustellen, um zu sehen, ob es NaN-Werte gibt

Edit: Keine NaN-Werte gefunden. Nur negative Werte, aber ich vermute, dass das keine Auswirkungen hat. Allerdings bekomme ich beim Suchen mit STRG+F (TablePlus) einen Fehler database disk image is malformed … Auswirkungen??

Letzte Logs mit Fehlern:

Du hast entweder keinen Speicherplatz mehr oder nicht mehr genug RAM verfügbar

« out of memory »

Hallo @Terdious! Deine riesige Instanz stellt uns weiterhin Herausforderungen! :smiley: Das ist cool, das wird uns ermöglichen, die Software noch weiter zu festigen :slight_smile:

Tatsächlich, wie die Fehlermeldung am Ende sagt, scheitern die Backups aufgrund von verfügbarem RAM während des Uploads! Und sie werden regelmäßig erneut versucht.

Wie viel RAM hast du übrigens zur Verfügung? Kannst du mal deinen RAM-Verbrauch während eines Backups überprüfen?

Was möglich ist (zu überprüfen, ich erinnere mich nicht mehr), ist, dass die Backups während des Uploads vollständig in den RAM geladen werden, was ein Problem darstellen würde, da dein Backup 800 MB groß ist. Wenn dein RAM 1 GB beträgt, verstehe ich, dass es hakt! Wenn es das ist, wäre die Lösung, auf einen Chunk-Upload umzusteigen, um nicht so viel RAM zu verwenden. (Es ist durchaus möglich, dass es das ist, ich muss prüfen, wie es auf der Code-Seite von Gladys funktioniert)

Danke @VonOx und @pierre-gilles für euer Feedback.
Es wäre mich sehr verwundert, wenn das RAM das Problem wäre. Deshalb habe ich euch im letzten Bild die untere Leiste gezeigt: 350 MB genutzt von 8 GB ^^

Das Maximum, das ich beobachten konnte, waren 8xx MB. Allerdings bin ich während des Backups bei 100% CPU-Auslastung (mit Spitzenwerten von 112% … :thinking:) und gebe nie die Kontrolle ab.

Nach einem Neustart startet das Backup und diesmal gibt es regelmäßig die Kontrolle an die Aggregation ab. Aber 30 Minuten später geht es wieder von vorne los ^^

Bist du dir bei der RAM sicher? Der Fehler ist hier eher eindeutig, es ist ein Out-of-Memory-Fehler! (350 MB ist doch nicht der normale Verbrauch, nachdem der Prozess abgestürzt ist?)

Ansonsten gibt es die Größe des JavaScript-Heap-Speichers, aber bei Node 14 sind es 4 GB, also denke ich nicht, dass es daran liegt…

Ja, wirklich sicher bei der RAM

Bei den 350 MB ja, das war tatsächlich nach dem Absturz. Aber auf meiner Seite habe ich visuell nie mehr als 1 GB gesehen, das ist sicher. Ich kann zwar Sessions machen, aber es ist nicht einfach, die Spitzen zu erwischen, denke ich… Und wie könnte es möglich sein, dass es die 8 GB übersteigt? :sweat_smile:

Ja, das ist sicher, 8 GB sind unmöglich

Hast du etwas auf deinem Rechner, das bestimmte Prozesse bei zu hohem RAM-Verbrauch beendet? Gibt es eine Grenze, die du bei Docker gesetzt hast?

:sweat_smile::sweat_smile:

Nein, entschuldige bitte!! Nach unseren vorherigen Recherchen in der Datenbank hatte ich alles für das SSD bereinigt. Also wird dieser Pi nur mit den Containern verwendet, die du in meiner vorherigen Nachricht siehst, installiert mit dem offiziellen Gladys-Image. Nichts wurde seitdem verändert.
Mein Mosquitto und Node Red laufen auf meinem anderen Pi mit Gladys Pro und Gladys Netatmo.

Ich helfe dir dabei nicht weiter… tut mir leid

Aber sag mal, wie viele Gladys laufen denn bei dir?
Ich will mir gar nicht vorstellen, wie viele Szenen das sind.
Ich freu mich schon auf dich an einem Dienstag.

Das hilft auch nicht gerade. :wink:

Ich habe mich gefragt (und gebe die Frage an euch weiter):
Werden die G±Backups nach Plan oder eher zufällig durchgeführt?
Wäre es sinnvoll, sie nachts zu planen, wenn Gladys weniger beansprucht wird?

Daher nehme ich an, dass es sich um einen Pi 4 mit 8 GB handelt? Hast du ein 64-Bit-System darauf installiert?

Aha, da haben wir den Punkt!!

Das offizielle Gladys-Image war bisher ein 32-Bit-Image, daher kannst du die 8 GB RAM nicht nutzen. Im besten Fall kannst du etwa 3 GB nutzen.

Aber du hast Glück :smiley: Wir haben gerade mit @VonOx an einem offiziellen 64-Bit-Image gearbeitet. Allerdings sind wir noch in der Testphase, aber ich habe es persönlich getestet und es funktionierte sehr gut:

In jedem Fall ist es nicht normal, dass der Upload so viel RAM verbraucht. Ich werde mich auf meiner Seite dem Thema widmen (an meinen Gladys-Tagen, morgen oder Montag/Dienstag) und versuchen, einen weniger ressourcenhungrigen Upload zu implementieren.

Auf deiner Seite wäre es eine gute Lösung für die kurze Zeit, auf ein 64-Bit-System umzusteigen, um das gesamte RAM deines Systems optimal zu nutzen :wink:

Kein Problem!!

Möchtest du vorher den Fall beobachten und direkt auf meiner Sitzung schauen? Falls es dir hilft, das Problem genau zu sehen… ^^ Meine Tür ist für Fernzugriff geöffnet ^^

In jedem Fall, danke!!

Das ist nicht unbedingt nötig, ich kann zu Hause einen Upload einer großen DB reproduzieren :slight_smile: Du kannst dein System aktualisieren!

Aktuell überprüft Gladys alle 2 Stunden, ob in den letzten 24 Stunden ein Backup durchgeführt wurde: Wenn ja, tut sie nichts, wenn nein, startet sie ein Backup.

Bisher waren die Backups bis auf den Fall von @Terdious quasi sofort abgeschlossen, also gab es tagsüber kein Problem :smiley:

Aber vielleicht wäre es sinnvoll, sie nachts durchzuführen, falls diese Backups für alle schwerer werden :slight_smile:

Zur Info habe ich ein GitHub-Issue bezüglich der Backups erstellt:

@Terdious halte uns auf dem Laufenden, wenn du auf 64-Bit umsteigst!

Hallo @pierre-gilles,

Danke für das Issue @pierre-gilles. Tatsächlich liegt das Problem, ganz oder teilweise, an einem Cache-Speicherproblem:
image
7,3 Giga werden alle 30 Minuten im Cache verwendet… das ist der Grund für den Absturz… aber jetzt ist es nicht mehr tragbar, ich kann nichts mehr machen…

Hmmmmh vielleicht habe ich deine vorherige Nachricht nicht verstanden…

Ist das eine offizielle Version mit Updates? Oder eine Testversion? Entschuldige die Frage, aber da ich keine anderen Pis habe (ich habe genug davon ^^), kann ich es mir nicht leisten, alles zu zerstören (auch wenn es am Ende schon kaputt ist ^^). Mein letzter Gladys-Plus-Backup liegt mehr als 10 Tage zurück…

Kann ich also für dich die 64-Bit-Version direkt auf die SSD installieren?

Ich sehe nichts Ungewöhnliches in dem Screenshot, den du geteilt hast. Der « buff/cache »-Speicher ist kein verwendeter Speicher, wenn eine Anwendung ihn benötigt, wird er vom System freigegeben.

Hier werden nur 228 MB RAM verwendet, was völlig normal ist :slight_smile: Aber ich nehme an, dass in deinem Screenshot kein Backup hochgeladen wird.

Siehe: https://unix.stackexchange.com/a/521493

Aktuell tritt dein Problem wahrscheinlich während eines Backups auf, da du ein 32-Bit-System verwendest, kann ein einzelner Prozess nicht mehr als 3 GB RAM der 8 GB nutzen, die du auf deinem System hast. Der Wechsel zu einem 64-Bit-System ermöglicht es dir, die gesamten 8 GB RAM in einem einzigen Prozess zu nutzen.

Wie die Raspberry Foundation auf ihrer Website sagt:

Unser Standard-Betriebssystem-Image verwendet einen 32-Bit-LPAE-Kernel und eine 32-Bit-Benutzeroberfläche. Dies ermöglicht mehreren Prozessen, alle 8 GB Speicher zu teilen, mit der Einschränkung, dass kein einzelner Prozess mehr als 3 GB nutzen kann

Quelle: https://www.raspberrypi.com/news/8gb-raspberry-pi-4-on-sale-now-at-75/

Es ist eine offizielle Version, aber noch in der Testphase, also quasi halb-offiziell, wenn du willst :smiley:

Im Großen und Ganzen hat @VonOx den Build erstellt, ich habe ihn etwa 1 Stunde lang getestet, und meine Tests waren positiv. Allerdings haben wir bisher keine weiteren Rückmeldungen von anderen Mitgliedern der Community bei einer « realeren » Nutzung erhalten, also kann ich nicht garantieren, dass es 100% fehlerfrei ist, wir haben nicht die gleiche Historie wie auf dem aktuellen Produktionsimage.

Du musst selbst entscheiden, ob es für dich produktionsbereit genug ist oder nicht.

Mach vorher Backups (indem du Gladys vorher stoppst, damit deine DB-Dateien nicht beschädigt werden), da deine Backups aufgrund des RAM-Mangels nicht mehr funktionieren :slight_smile:

Ja, da hast du recht !!^^

Lol, ich hatte tatsächlich seit 8:30 Uhr ein Backup laufen ^^

:slight_smile: Ja, das habe ich verstanden ^^, ich kenne mich mit dem Thema aus :wink: Ich habe es nur wegen der zitierten Nachricht darunter nicht verstanden ^^

Oki, das ist jetzt klarer für mich, danke für dein Feedback.

Also habe ich es ausprobiert, ich hatte eine zusätzliche SSD ^^ Es wird gerade neu installiert ^^

Ich gebe euch später Feedback.