Sie verwenden Heroku, um Webanwendungen kostenlos auszuführen, oder? Wenn Sie es jedoch kostenlos verwenden und die Anwendung länger als 30 Minuten verlassen (keine Anforderung), wird der Server in den Energiesparmodus versetzt.
Wenn Sie nach dem Ruhezustand auf die Anwendung zugreifen, dauert es einige Zeit, bis die Antwort zurückkommt. Um die Startzeit zu verkürzen, habe ich versucht, GraalVM zu verwenden, das in letzter Zeit Aufmerksamkeit erregt hat, und Quarkus, das Java-Webanwendungen auf GraalVM ausführen kann.
Dieses Mal möchte ich vergleichen, wie Quarkus mit Heroku und die Startzeit mit Spring Boot ausgeführt werden.
Weitere Informationen zum Erstellen einer Anwendung finden Sie im folgenden Artikel.
Ich habe das Java-Framework "Quarkus" ausprobiert
Dieses Mal werden wir Herokus Container-Registrierung für die Docker-Registrierung verwenden.
Erstellen Sie die folgende Datei.
src/main/docker/Dockerfile.web
FROM registry.fedoraproject.org/fedora-minimal
WORKDIR /work/
COPY *-runner /work/application
RUN chmod 775 /work
EXPOSE 8080
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Dquarkus.http.port=${PORT}"]
-Dquarkus.http.port=${PORT}Wird benötigt, um an dem von Heroku angegebenen Port zu booten. Ohne dies kann es nicht gestartet werden.
Übrigens können Sie den Startport der Quarkus-App ändern, indem Sie den Teil $ {PORT} ändern.
## Melden Sie sich beim Heroku-Container an
```console
heroku container:login
heroku create <Anwendungsname>
Danach gehen Sie bitte mit dem Projektstamm.
heroku container:push -R -a <Anwendungsname>
heroku container:release web -a <Anwendungsname>
curl https://<Anwendungsname>.herokuapp.com/hello
Bestätigen Sie, dass Hallo ausgegeben wird.
RestController
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping("hello")
public String home() {
return "hello";
}
}
Dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/app.jar app.jar
CMD ["java","-jar","app.jar","--server.port=${PORT}"]
** Die folgenden Schritte sind mit Quarkus identisch, daher werden sie weggelassen. ** ** **
Warten Sie, bis sich der Heroku-Server im folgenden Zustand befindet.
Führen Sie den folgenden Befehl zum Messen aus.
curl https://<Name der Quarkus-Anwendung>.herokuapp.com/hello -o /dev/null -w "%{time_starttransfer}\n" -s
7.038011
curl https://<Name der Spring Boot-Anwendung>.herokuapp.com/hello -o /dev/null -w "%{time_starttransfer}\n" -s
15.208555
** Quarkus bootet jetzt in der Hälfte der Zeit von Spring Boot **
Recommended Posts