--Wenn die in der Taskdefinition von fargate unter "Taskspeicher" angegebene Speichermenge überschritten wird, wird die Task zwangsweise beendet.
Dockerfile
FROM openjdk:8-jre-alpine
ENV APPLICATION_USER ktor
RUN adduser -D -g '' $APPLICATION_USER
RUN mkdir /app
RUN chown -R $APPLICATION_USER /app
USER $APPLICATION_USER
COPY ./build/libs/my-application.jar /app/my-application.jar
WORKDIR /app
CMD ["java", "-server", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-XX:InitialRAMFraction=2", "-XX:MinRAMFraction=2", "-XX:MaxRAMFraction=2", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-XX:MaxMetaspaceSize=256M", "-XshowSettings:vm", "-jar", "my-application.jar"]
Grundsätzlich [ktor Dokumentation](https://jp.ktor.work/quickstart/quickstart/docker.html#docker%E3%82%A4%E3%83%A1%E3%83%BC%E3% Basierend auf 82% B8% E3% 81% AE% E6% BA% 96% E5% 82% 99), aber Java-Option hinzugefügt.
---XX: MaxMetaspaceSize = 256M
: Diese Einstellung sichert den Maximalwert des Metaspace von 256 MB und erhöht ihn nicht mehr. Standardmäßig kann es unbegrenzt erweitert werden, daher stelle ich den Maximalwert für alle Fälle ein.
---XshowSettings: vm
: Gibt die VM-Einstellungen beim Start aus.
Stellen Sie sicher, dass Sie das Speicher-Hard-Limit in der Container-Definition angeben. Der hier angegebene Wert wird an die Option "--memory" von "Docker Run" übergeben. Geben Sie normalerweise denselben Wert wie den Aufgabenspeicher an.
Zeigen Sie das Fargate-Aufgabenprotokoll an und stellen Sie sicher, dass "Max. Heap Size" Ihren Erwartungen entspricht. In diesem Fall beträgt das harte Limit 1000 MB und die Java-Option lautet "-XX: MaxRAMFraction = 2", sodass 500 MB korrekt sind.
Recommended Posts