Модуль Kubernetes помечен как OOMKilled
Под Kubernetes прекращает работу и помечается как OOMKilled. Ниже приведен мой yaml-файл cronjob:
kind: CronJob
metadata:
name: test-cron
spec:
schedule: "30 2 1 * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
backoffLimit: 1
template:
spec:
containers:
- name: test-container
image: <image>
resources:
limits:
memory: 10240Mi
cpu: 4000m
ephemeral-storage: 2Gi
requests:
memory: 10240Mi
cpu: 4000m
ephemeral-storage: 2Gi
args:
- java
- -cp
- /jars/*
- -Xmx9g
- -Xms9g
- -XX:+UnlockCommercialFeatures
- -XX:+FlightRecorder
- -Dcom.sun.management.jmxremote
- -Dcom.sun.management.jmxremote.port=9002
- -Dcom.sun.management.jmxremote.authenticate=false
- -Dcom.sun.management.jmxremote.ssl=false
- com.test.app.TestApplication
restartPolicy: Never
Я не получаю OutOfMemoryError в своем Java-приложении. Одной из причин может быть то, что pod использует больше памяти, чем предел, указанный в yaml. Но как это возможно, потому что набор Xmx равен 9 ГБ, и если использование кучи пытается превысить 9 ГБ, мое приложение должно выдавать ошибку OOM.
Одна вещь, которую я пытался сделать, это увеличить запрос памяти модуля и ограничить его до 15 ГБ, в основном теперь есть большая разница между запросом / лимитом памяти Xmx и модуля. На этот раз мой модуль прошел успешно. Почему это сработало?