Docker убивает Java-контейнер из-за OOM, но в статистике JMX нет признаков высокого использования памятиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Docker убивает Java-контейнер из-за OOM, но в статистике JMX нет признаков высокого использования памяти

Сообщение Anonymous »


У нас есть контейнер Docker с приложением Java 11, работающим на AWS ECS. Служба настроена на завершение после использования 1,5 ГБ ОЗУ

"память": 1500, «Резервация памяти»: 1137,
Изображение


Проблема в том, что мы не видим увеличения использования памяти на наших информационных панелях.
Изображение

Изображение

Изображение
(p.s. плоская линия на панелях Grafana связана с тем, что Prometheus больше не получает показатели).

Мы сделали практически все возможное, чтобы ограничить объем внутренней и внешней памяти, которую Java может использовать, и если я проверю выходные данные NMT, то зарезервированное использование составит не более 1,1 ГБ. Наша командная строка сейчас такая:

java ‑Xmx600m ‑XX:+UseG1GC ‑XX:MaxMetaspaceSize=220m ‑XX:+PrintFlagsFinal ‑XX:NewRatio=1 ‑XX:MaxDirectMemorySize=40m ‑Xss512k ‑XX:ProfiledCodeHeapSize=70M ‑XX:NonProfiledCodeHeapSize=50M ‑XX:NonNMethodCodeHeapSize=8M ‑XX:+UseCodeCacheFlushing ‑XX:CompressedClassSpaceSize=32M ‑XX:ReservedCodeCacheSize=128M ‑XX:+SegmentedCodeCache ‑javaagent:/opentelemetry‑javaagent.jar ‑Dotel.javaagent.extensions=/opentelemetry‑java‑ecs‑extension‑all.jar ‑Dotel.resource.attributes=xxx,aws.ecs.launchtype=ec2 ‑XX:NativeMemoryTracking=сводка ‑XX:‑OmitStackTraceInFastThrow ‑Dspring.profiles.active=prd‑ecs ‑Dspring.cloud.consul.host=172.17.42.1 ‑Dspring.cloud.consul.config.watch.enabled=false ‑Dcom.sun.management.jmxremote.port=9999 ‑Dcom.sun.management.jmxremote.authenticate=false ‑Dcom.sun.management.jmxremote.ssl=false ‑Dlog4j2.formatMsgNoLookups=true ‑Dserver.port=8080 ‑Daws.paramstore.enabled=истина ‑Daws.paramstore.region=eu‑west‑1 ‑Dspring.main.banner‑mode=off ‑jar /1234‑service.jar Мы понятия не имеем, как это возможно, что наши контейнеры внезапно используют 400 МБ памяти без каких-либо признаков этого в метриках JMX.

//edit: вывод NMT самого старого работающего контейнера

Отслеживание встроенной памяти: Итого: зарезервировано = 1180115 КБ, зафиксировано = 700171 КБ. - Куча Java (зарезервировано = 614 400 КБ, зафиксировано = 260096 КБ) (mmap: зарезервировано = 614 400 КБ, зафиксировано = 260096 КБ) - Класс (зарезервировано = 215344 КБ, зафиксировано = 208080 КБ) (класс №35567) (классы экземпляров № 33401, классы массивов № 2166) (malloc=8496КБ #125896) (mmap: зарезервировано = 206848 КБ, зафиксировано = 199584 КБ) ( Метаданные: ) (зарезервировано=174080КБ, зафиксировано=173536КБ) (используется=167363КБ) (бесплатно = 6173 КБ) (отходы=0КБ =0,00%) (Классное пространство:) (зарезервировано=32768КБ, зафиксировано=26048КБ) (используется=22342КБ) (бесплатно = 3706 КБ) (отходы=0КБ =0,00%) - Тема (зарезервировано = 77858 КБ, зафиксировано = 16034 КБ) (тема № 125) (стек: зарезервировано = 77260 КБ, зафиксировано = 15 436 КБ) (malloc=452КБ #752) (арена=146КБ #249) - Код (зарезервировано = 139426 КБ, зафиксировано = 96022 КБ) (malloc=7330КБ #29103) (mmap: зарезервировано = 132096 КБ, зафиксировано = 88692 КБ) - GC (зарезервировано = 70010 КБ, зафиксировано = 56862 КБ) (malloc=14362КБ #61984) (mmap: зарезервировано = 55648 КБ, зафиксировано = 42 500 КБ) - Компилятор (зарезервировано = 896 КБ, зафиксировано = 896 КБ) (malloc=764КБ #2798) (арена=133КБ #5) - Внутренний (зарезервировано = 4509 КБ, зафиксировано = 4509 КБ) (malloc=4477КБ #3670) (mmap: зарезервировано = 32 КБ, зафиксировано = 32 КБ) - Другое (зарезервировано = 4359 КБ, зафиксировано = 4359 КБ) (malloc=4359КБ #39) - Символ (зарезервировано = 37775 КБ, зафиксировано = 37775 КБ) (malloc=34219КБ #439593) (арена=3556КБ #1) - Отслеживание встроенной памяти (зарезервировано = 10765 КБ, зафиксировано = 10765 КБ) (malloc=34КБ #437) (накладные расходы на отслеживание = 10731 КБ) - Arena Chunk (зарезервировано = 190 КБ, зафиксировано = 190 КБ) (malloc=190 КБ) - Ведение журнала (зарезервировано = 4 КБ, зафиксировано = 4 КБ) (malloc=4КБ #194) - Аргументы (зарезервировано = 20 КБ, зафиксировано = 20 КБ) (malloc=20КБ #545) - Модуль (зарезервировано = 3692 КБ, зафиксировано = 3692 КБ) (malloc=3692КБ #14082) - Синхронизатор (зарезервировано = 860 КБ, зафиксировано = 860 КБ) (malloc=860КБ #7286) - Safepoint (зарезервировано = 8 КБ, зафиксировано = 8 КБ) (mmap: зарезервировано = 8 КБ, зафиксировано = 8 КБ) //edit2: наш образ Docker, который мы используем в более чем 90 сервисах Docker

FROM --platform=$TARGETPLATFORM amazoncorretto:11 RUN yum install -yshadow-utils wget && yum очистить все ЗАПУСК wget https://github.com/open-telemetry/opent ... aagent.jar -O /opentelemetry-javaagent.jar ДОБАВИТЬ opentelemetry-java-ecs-extension-*-all.jar /opentelemetry-java-ecs-extension-all.jar Запустить докер adduser ВЫПОЛНИТЬ, если [ -f $JAVA_HOME/conf/security/java.security ]; затем sed -i 's/^networkaddress.cache.ttl/#networkaddress.cache.ttl/g' $JAVA_HOME/conf/security/java.security; фи && \ echo "networkaddress.cache.ttl=30" >> $JAVA_HOME/conf/security/java.security Докер ПОЛЬЗОВАТЕЛЬ //edit3: забыл упомянуть, что мы также установили эту переменную окружения
{ "name": "MALLOC_ARENA_MAX", "значение": "4" }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»