170 похожих чатов

Доброго всем времени суток Open JDK (tomcat и war app) внутри

Docker контейнера использует только часть CPU ресурсов и работает медленно
Не подскажите как этим бороться? Может какие то параметры в JAVA_OPTS хитрые передать?

16 ответов

24 просмотра

Я не думаю, что JAVA_OPTS помогут, если контейнеру мало ресурсов выделяется

Vladimir-Samoylov Автор вопроса
FJP
Я не думаю, что JAVA_OPTS помогут, если контейнеру...

пробовал выделять от 2 vCPU до 16 vCPU ситуация не изменяется используется по прежнему только 30% от 1 vCPU --cpu-shares пробовал, внутри контейнера ресурсы отображаются корректно процессоры доступны

Vladimir Samoylov
пробовал выделять от 2 vCPU до 16 vCPU ситуация не...

https://stackoverflow.com/questions/39089850/docker-doesnt-get-100-of-the-cpu Тут пишут, что в докер десктопе какие-то дефолтные конфиги были, не твой случай?

Vladimir-Samoylov Автор вопроса
Vladimir-Samoylov Автор вопроса

java -XshowSettings:all -version https://gist.github.com/cageyv/477b62cc048dfc7c88a047c1f4cbc941 Ресурсов сколько угодно есть.. Есть аналогичный сетап без контейнеров и там дела обстоят ровно в 2 раза лучше процесс забирает 60% от CPU , но там нет возможности проводить эксперименты к сожалению

Vladimir-Samoylov Автор вопроса

Есть запущенное приложение без докера и там потребляет больше

Vladimir-Samoylov Автор вопроса
central hardware
а память как то ограничивали?

Да стандартными флагами память ограничена На старой инсталляции это Xmx , на новой пробовал и Xmx и какой то более новый XX:MaxRAMPercentage

Vladimir Samoylov
Да стандартными флагами память ограничена На старо...

дак у вас jdk15, там достаточно лимиты на контейнер поставить

Vladimir-Samoylov Автор вопроса
I S
дак у вас jdk15, там достаточно лимиты на контейне...

На JDK15 вчера вот и пересобрал как раз) Да там есть UseContainerSupport по дефолту включённый С ним не нужны никакие больше флаги для памяти и процессора?

Vladimir-Samoylov Автор вопроса
I S
не нужны, чтобы не уйти в OOM

Спасибо, попробую сегодня убрать , а вот это флаг ещё требуется в JDK15 XX:+UseParallelGC ? Или по дефолту jvm сможет принять более оптимальное решение? app_env_set = { CATALINA_OPTS = "-XX:InitialRAMPercentage=30 -XX:MaxRAMPercentage=100 -XX:+UseContainerSupport -XX:+UseParallelGC" CATALINA_OUT = "/dev/stdout" JAVA_OPTS = "-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -server" }

Vladimir-Samoylov Автор вопроса

есть некоторый процесс долгий, который приложение запускает в отдельном подпроцессе без докера он выполяется 4 минуты и нагружает CPU на 60% (htop/top) внутри докера он выполняется 8 минут и нагружает CPU на 30% (htop на хостовой машине)

Vladimir-Samoylov Автор вопроса

пробовал разные варианты 2,4,8,16 результат не менялся или менялся незначительно в рамках погрешности скажем так выдавал через --cpu-shares позволяя JVM посчитать самой и через флаг XX:ActiveProcessorCount

Vladimir-Samoylov Автор вопроса

совсем не отличаются, один в один от дефолтных отличие в основном в AJP коннекторе

Vladimir-Samoylov Автор вопроса

Продолжение истории Попробовали запустить на другом типе EC2 и да результат получился другой. думаю что T3 семейство плохо подходит для сильных нагрузок на CPU если используются контейнеры. перешли на C5 и дела стали получше К сожалению совсем чистого эксперимента не вышло. Нашлась проблема связанная с самой тестовой задачей. Но в результате получилось даже быстрее чем на старом окружении, что лучше в любом случае спасибо @lex_it и @centralhardware

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта