KamoCRM

Die Swap-Datei war kleiner als der Scheck, der sie misst

FixKlusterServices
Verschickt
23. September 2026 um 19:17 UTC
Autor
Kamo
Commit
4673e45

Mit der Neustart-Landung, kam der erste Computer mit Lebenslauf Konfiguriert wahr und gestoppt auf der nächste Voraussetzung - die sich durch Bau unzufrieden erweist: swapBytes 2095468544 der USABLE-Bereich, von /proc/swaps swapNeedBytes 2095474483 int(MemTotal * 1.05) short by 5.939 von 2 GB Datei bereitiness() misst den Bereich mkswap nutzbar gelassen. _ensure_swap zugewiesen die Datei genau an die Nummer, der Bereich mit verglichen wird, und mkswap nimmt eine Kopfseite und rundet den Rest nach unten ganze Seiten - so ist der nutzbare Bereich immer ein paar KB kurz vor seinem eigenen Ziel. Dann _ensure_swap frühe Rückkehren auf "haben == want_bytes", so dass es nie wächst, und SwapLargeEnough bleibt für immer falsch. Die Datei ist jetzt mit einer Marge zugeordnet, und die Marge ist 16 MiB statt der einen Seite mkswap braucht, weil MemTotal keine Konstante ist: Der Kernel schließt aus, welche Firmware und die initrd-Reserve, und das bewegte sich um 5.6 KB zwischen zwei Stiefeln dieser gleichen VM. Eine in Seiten gemessene Marge würde ein Computer ein Kernel-Upgrade weg vom nie wieder schlafen. Die frühe Rückkehr ist jetzt "haben .= target", nicht "==". Gleichberechtigung bedeutete ein MemTotal Wackeln in beiden Richtung schrieb eine 2 GB-Datei auf einem Longhorn-Volume auf einer Maschine, die bereits in Ordnung war. Auch hier, weil beide durch die gleiche Untersuchung gefunden wurden: Der Neustart wird nun vom unbeüßten Beobachter gejagt und nicht von dem, der zufällig anruft/vorbereitet. Beide Momente, die wie der richtige aussehen, sind falsch. Der Boot-Thread des Agenten läuft vor Computeservice hat alles geschubst, so dass es noch nichts zu schützen gibt. Und /Vorbereitung-Schlaf ist nicht von computeservice überhaupt angerufen - die Client-Methode existiert und hat keinen Anrufer; der echte Anrufer ist ein runcmd in cloud-init.userdata.yaml, das in der MIDDLE der Bereitstellung feuert. Die Frage ist also einfach alle dreißig Sekunden von dem Beobachter, der bereits Umfrage war, umgefragt, umgeschirmt alle dreißig Sekunden Bereitstellung Push mit gelandet und auf es keine Desktop-Sitzung. Dieses zweite Tor ist stärker als es aussieht: eine xrdp-Session überlebt eine Trennung, so dass eine leere Liste bedeutet, dass sich noch niemand eingeloggt hat oder jeder hat sich abgemeldet, nicht nur, dass niemand an der Tastatur ist. Verweigerung Log einmal pro eindeutiger Grund. Niemals still, und nicht zweitausend identische Zeilen pro Tag. Ein abgelehnter "systemctl hibernate" erreicht nun das Journal. Bei Erfolg kehrt das Kommando nie zurück, also nur, was es jemals drucken kann, ist, warum es sagte nein - und das ging an DEVNULL, so dass Computeservice zu Zehn Minuten später bemerken Sie, dass ein Computer "nicht schlafen gegangen ist, wenn er gefragt wird", ohne Grund irgendwo. run_forever wird in die Schleife und tick( aufgeteilt, so dass die Entscheidungen getestet werden können. 43 Tests.

Alle Änderungen anzeigen

Wie das, was Sie sehen Versand?

Beginnen Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat erneut, um zu sehen, ob Sie die neuen Funktionen nutzen möchten.

Kostenlos für immer startenPreise anzeigen