Demo para demonstrar como uma aplicação Spring Boot funciona com o mecanismo de Checkpoint e Restore (CRaC) disponibilizado em algumas distribuições do OpenJDK.
Requisitos:
- Java 21
- Docker ou similar
Crie o jar da aplicação:
./mvnw clean package
Crie a imagem docker:
docker build -t java21-crac .
Iniciando o container para simular o comportamento do CRaC
docker run --privileged -p 8080:8080 --name demo_crac -it java21-crac
Dentro do container iniciado, vamos instalar o JDK compativel com CRaC
sdk install java 21.0.2.crac-zulu
Vamos iniciar a aplicação informando o diretório onde a JVM deverá gravar os arquivos do snapshot
java -XX:CRaCCheckpointTo=cr -jar demo.jar
Entrar no container em outro terminal
docker exec -it demo_crac /bin/bash
Captturar um snapshot da aplicação em execução
jcmd demo.jar JDK.checkpoint
No mesmo terminal onde a aplicação estava sendo executada, execute o comando abaixo:
java -XX:CRaCRestoreFrom=cr
Envia 1000 requisições para a aplicação
siege -c 1 -r 1000 -b http://localhost:8080/hello
docker stop demo_crac
docker rm demo_crac
docker start demo_crac
docker rmi java21-crac