PRNext スリープ モード: アイドル状態の RAM を減らし、ウェイクアップを管理します

内部ツールは、何時間もリクエストを受けなくても、少数の人が利用できる場合があります。そのプロセスは依然としてメモリを占有しています。 PRNext は、アイドル状態のノード ワーカーを廃止し、レンダリング リクエストが到着したときにそれらを再作成できます。

これにより、アイドル状態のメモリの一部がウェイクアップ作業と引き換えになります。このガイドでは、サイクルがアプリケーションに適合するかどうかを判断するために必要な測定、設定、確認について説明します。設定は PRNext 0.1.18-alpha. について説明します

睡眠中に実行し続けるもの

ここで測定したメカニズムでは、アイドル期間後にノード ワーカーがリタイアしている間、Rust サーバーはリッスンを続けます。レンダリングが必要な次のリクエストでは、必要なワーカーが再作成されます。これは、VPS の停止やオペレーティング システムの一時停止とは異なります。

ローカル prnext ホスト コマンドは、ゲートウェイの背後でアプリケーション全体をスリープさせることもできます。マネージド PRNext Host サービスもまた別のレイヤーです。ここでの値は、他のメカニズムの総コストではなく、アプリケーション サーバーのワーカーの退職を表します。

ウェイクアッププローブが示すもの

10 月の 29 キャンペーンの小規模 VPS では、加速された 2 秒のアイドル間隔で単純な SSR ページがテストされました。従業員が退職した後、プロセス ツリー PSS は約 10.5 MiB まで低下しました。作業員の保温には、そのプローブで 106.8 MiB が使用されました。

ウェイクアップ要求には、暖かい場合の 22.6 ms と比較して、約 1,130 ms かかりました。各設定には観測値が 1 つだけありました。このプローブは、最終的な npm パッケージや VPS 全体の新しい測定ではなく、特定された開発候補を使用しました。これらの値は、アプリケーションを予測することなく、トレードオフを示します。

プローブ、候補のアイデンティティ、および測定条件を読み取る

レイテンシが最も重要な場合に従業員を暖かく保ちます

ビルド後、 --prewarm はリクエストを受け入れる前にフレームワークを準備します。アプリケーション ページや API は実行されず、その後のアイドル状態のリタイアは防止されません。 --worker-idle-seconds 0 は、使用されているレンダリング ホストを、非アクティブなためにリタイアするのではなく保持します。

次のコマンドは、準備された起動を要求し、一度使用されたワーカーを保持します。決してアクセスされていないルートがすべての依存関係をロードしたことを保証するものではありません。高価なルートへの最初の訪問と展開後の動作も​​測定します。

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

明示的なアイドル間隔をテストする

明示的な 60-second 間隔により、分離されたインスタンスでサイクルを観察しやすくなります。ページにアクセスし、従業員が実際に退職するのを待って、次のリクエストを測定します。 60 秒は設定例であり、すべてのサイトに対する推奨値ではありません。

レンダリング ルートを継続的に要求するヘルス プローブは、スリープを妨げる可能性があります。どのような監視リクエストとサーバーがそれをどのように処理するかを確認してください。また、1 回の起床中に到着する複数の訪問をテストします。単一のリクエストではそのピークを記述しません。

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

耐久性のあるデータをプロセスの外に保管する

ワーカーを退職すると、ワーカーのメモリ内状態が削除されます。そのプロセス内でのみ保持されているセッション、アプリケーション キャッシュ、バックグラウンド作業が失われる可能性があります。存続する必要があるデータには、耐久性のあるストレージまたは適切な外部サービスが必要です。

スリープを有効にする前に、ログイン、ウェイクアップ後の書き込みと読み取りをテストします。サブスクリプション、タイマー、非同期作業も確認してください。完了したリクエストは、追跡されていないバックグラウンド作業がプロセスのリタイアから保護されていることを証明するものではありません。

アプリケーションのアイドル期間から選択します

デモ、プレビュー環境、および時々訪問されるツールが調査対象の候補となります。初動対応が迅速である必要がある旅行の場合は、温厚な作業員の方が望ましい場合があります。実際のトラフィック、モニタリングプローブ、ウェイクアップ頻度によって結果が決まります。

スリープ時間、解放されたメモリ、サービスを起動する訪問の待ち時間を比較します。複数のアプリケーションの場合は、1 つのサーバーでより多くのプロジェクトをホストできると結論付ける前に、同時ピークを測定してください。当社のキャンペーンでは、追加のサイト数や料金の節約は確立されません。

VPS 上の複数の React アプリケーションの予算

出典と詳細情報

ブログに戻る