PRNext Schlafmodus: Leerlauf RAM reduzieren und Aufwecken verwalten

Ein internes Tool kann einigen wenigen Personen stundenlang zur Verfügung stehen, ohne dass eine Anfrage eingeht. Seine Prozesse belegen immer noch den Speicher. PRNext kann inaktive Node-Worker zurückziehen und neu erstellen, wenn eine Rendering-Anfrage eintrifft.

Dadurch wird ungenutzter Speicher gegen Weckarbeit eingetauscht. In diesem Leitfaden werden die Messungen, Einstellungen und Prüfungen erläutert, die erforderlich sind, um zu entscheiden, ob das Fahrrad für Ihre Anwendung geeignet ist. Die Einstellungen beschreiben PRNext 0.1.18-alpha.

Was bleibt im Schlaf am Laufen?

Bei dem hier gemessenen Mechanismus lauscht der Rust-Server weiter, während Node-Worker nach einem Leerlaufintervall in den Ruhestand gehen. Die nächste Anforderung, die ein Rendern erfordert, erstellt die benötigten Worker neu. Dies unterscheidet sich vom Stoppen des VPS oder dem Anhalten des Betriebssystems.

Der lokale Hostbefehl prnext kann auch eine gesamte Anwendung hinter einem Gateway in den Ruhezustand versetzen. Der verwaltete PRNext Host-Dienst ist wiederum eine weitere Ebene. Die Werte hier beschreiben die Ausmusterung von Anwendungsserver-Workern und nicht die Gesamtkosten dieser anderen Mechanismen.

Was die Wecksonde zeigt

Auf dem kleinen VPS wurde in der 29-Kampagne im Oktober eine einfache SSR-Seite mit einem beschleunigten Zwei-Sekunden-Leerlaufintervall getestet. Nachdem die Mitarbeiter in den Ruhestand gingen, sank der Prozessbaum-PSS auf etwa 10.5 MiB. Um die Arbeiter warm zu halten, wurde in dieser Sonde 106.8 MiB verwendet.

Die Aufweckanforderung dauerte etwa 1,130 ms, verglichen mit 22.6 ms im warmen Zustand. Jede Einstellung hatte nur eine Beobachtung. Die Probe verwendete den identifizierten Entwicklungskandidaten und keine neue Messung des endgültigen npm-Pakets oder des gesamten VPS. Diese Werte veranschaulichen den Kompromiss, ohne Ihre Anwendung vorherzusagen.

Lesen Sie die Sonde, die Identität des Kandidaten und die Messbedingungen ab

Halten Sie Ihre Mitarbeiter warm, wenn die Latenz am wichtigsten ist

Nach dem Erstellen bereitet --prewarm das Framework vor, bevor Anfragen angenommen werden. Es führt keine Anwendungsseiten oder APIs aus und verhindert nicht die spätere Stilllegung im Leerlauf. --worker-idle-seconds 0 behält verwendete Rendering-Hosts bei, anstatt sie wegen Inaktivität außer Betrieb zu nehmen.

Der folgende Befehl fordert einen vorbereiteten Start an und behält einmal verwendete Worker bei. Es wird nicht versprochen, dass eine nie besuchte Route alle Abhängigkeiten geladen hat. Messen Sie den ersten Besuch teurer Routen und das Verhalten auch nach dem Einsatz.

Terminal
npx --no-install prnext build
npx --no-install prnext start --hostname 127.0.0.1 --port 3001 --prewarm --worker-idle-seconds 0

Testen Sie ein explizites Leerlaufintervall

Ein explizites 60-second-Intervall erleichtert die Beobachtung des Zyklus in einer isolierten Instanz. Besuchen Sie die Seite, warten Sie, bis die Mitarbeiter tatsächlich in den Ruhestand gehen, und prüfen Sie die nächste Anfrage. Sechzig Sekunden sind eine Beispieleinstellung und keine Empfehlung für jede Website.

Eine Integritätsprüfung, die kontinuierlich eine Rendering-Route anfordert, kann den Ruhezustand verhindern. Prüfen Sie, welche Überwachungsanfragen vorliegen und wie der Server damit umgeht. Testen Sie auch mehrere Besuche, die während eines Aufwachvorgangs eintreffen: Eine einzelne Anfrage beschreibt diesen Höhepunkt nicht.

Terminal
npx --no-install prnext start --hostname 127.0.0.1 --port 3001 --worker-idle-seconds 60

Halten Sie dauerhafte Daten außerhalb des Prozesses

Durch das Zurückziehen eines Workers wird sein In-Memory-Status entfernt. Nur in diesem Prozess abgehaltene Sitzungen, Anwendungscaches und Hintergrundarbeiten können verschwinden. Daten, die überleben müssen, benötigen eine dauerhafte Speicherung oder einen geeigneten externen Dienst.

Bevor Sie den Ruhezustand aktivieren, testen Sie die Anmeldung sowie einen Schreib- und Lesevorgang nach dem Aufwachen. Überprüfen Sie auch Abonnements, Timer und asynchrone Arbeit. Eine abgeschlossene Anfrage beweist nicht, dass nicht verfolgte Hintergrundarbeit vor der Prozesseinstellung geschützt ist.

Wählen Sie aus den Leerlaufzeiten Ihrer Anwendung

Demos, Vorschauumgebungen und gelegentlich besuchte Tools sind Kandidaten, die es zu untersuchen gilt. Für Reisen, bei denen die erste Reaktion schnell erfolgen muss, sind freundliche Mitarbeiter möglicherweise vorzuziehen. Realer Verkehr, Überwachungssonden und Weckfrequenz bestimmen das Ergebnis.

Vergleichen Sie die Ruhezeit, den freigegebenen Speicher und die Latenz für Besuche, die den Dienst aktivieren. Messen Sie bei mehreren Anwendungen gleichzeitige Spitzenwerte, bevor Sie zu dem Schluss kommen, dass ein Server mehrere Projekte hosten kann. Unsere Kampagne führt weder zu einer zusätzlichen Site-Zählung noch zu einer Rechnungseinsparung.

Budget für mehrere React-Anwendungen auf einem VPS

Quellen und weiterführende Literatur

Zurück zum Blog