JVM を使用したチェックポイントと復元

チェックポイントでの調整された復元 (英語) (CRaC) は、HotSpot JVM 上でアプリケーションをチェックポイントして復元できるようにする新しい Java API を定義する OpenJDK プロジェクトです。これは、Linux 上でチェックポイント / 復元機能を実装するプロジェクトである CRIU [GitHub] (英語) に基づいています。

原則は次のとおりです。通常とほぼ同じようにアプリケーションを起動しますが、CRaC を備えた BellSoft Liberica JDK (英語) または CRaC を使用した Azul Zulu JDK (英語) などの CRaC 対応バージョンの JDK を使用します。その後、ある時点で、すべての共通コードパスを実行して JVM をウォームアップするいくつかのワークロードの後、API 呼び出し、jcmd コマンド、HTTP エンドポイント、または別のメカニズムを使用してチェックポイントをトリガーします。

実行中の JVM のメモリ表現 (ウォームネスを含む) はディスクに直列化され、後で、同様のオペレーティングシステムと CPU アーキテクチャを備えた別のマシン上で高速復元できるようになります。復元されたプロセスは、実行時のさらなる JIT 最適化を含む、HotSpot JVM のすべての機能を保持します。

Spring Framework によって提供される基盤に基づいて、Spring Boot はアプリケーションのチェックポイント設定と復元のサポートを提供し、限られた範囲 [GitHub] (英語) でソケット、ファイル、スレッドプールなどのリソースのライフサイクルをすぐに管理します。他の依存関係、およびそのようなリソースを処理するアプリケーションコードについては、追加のライフサイクル管理が期待されます。

サポートされている 2 つのモード (「実行中のアプリケーションのオンデマンドチェックポイント / リストア」と「起動時の自動チェックポイント / リストア」)、チェックポイントとリストアのサポートを有効にする方法、およびいくつかのガイドラインの詳細については、「Spring Framework JVM チェックポイントリストアサポート」を参照してください。ドキュメント