Size: a a a

2021 January 06

1

1ommy in pro.jvm
Alexandr Emelyanov
Первый на js, второй на typescript. Третий можно и так и так. Первые два популярнее, выбирай что душе угодно
реакт как раз таки сейчас без тс почти нигде не используется
источник

KR

Kostyantin Randomnam... in pro.jvm
1ommy
реакт как раз таки сейчас без тс почти нигде не используется
я случайно увидел и засмеялся. почти нигде это в 30% всех веб приложений мира?:)
источник

1

1ommy in pro.jvm
Kostyantin Randomname
я случайно увидел и засмеялся. почти нигде это в 30% всех веб приложений мира?:)
Большинство приложений используют ТС, если посмотреть даже вакансии это станет сразу ясно
источник

VS

Vladimir Samoylov in pro.jvm
central hardware
а память как то ограничивали?
Да стандартными флагами память ограничена
На старой инсталляции это Xmx , на новой пробовал и Xmx и какой то более новый XX:MaxRAMPercentage
источник

L

Loljeene in pro.jvm
Vladimir Samoylov
Да стандартными флагами память ограничена
На старой инсталляции это Xmx , на новой пробовал и Xmx и какой то более новый XX:MaxRAMPercentage
дак у вас jdk15, там достаточно лимиты на контейнер поставить
источник

KR

Kostyantin Randomnam... in pro.jvm
1ommy
Большинство приложений используют ТС, если посмотреть даже вакансии это станет сразу ясно
какое-то утверждение из разряда "всем известно"
источник

VS

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

L

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

VS

Vladimir Samoylov in pro.jvm
Loljeene
не нужны, чтобы не уйти в 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"
 }
источник

L

Loljeene in pro.jvm
docker run -m 1GB openjdk:11 java -XshowSettings:vm -version
   Max. Heap Size (Estimated): 247.50M
docker run -m 1GB openjdk:15 java -XshowSettings:vm -version
Max. Heap Size (Estimated): 6.25G
Хм, как интересно. На 10,11,14 все ок
А на 15 откуда то 6 гигов
источник

L

Loljeene in pro.jvm
docker run -m 1GB adoptopenjdk:15-jdk-hotspot java -XshowSettings:vm -version
Max. Heap Size (Estimated): 247.50M
А тут корректно
источник

VS

Vladimir Samoylov in pro.jvm
Loljeene
docker run -m 1GB adoptopenjdk:15-jdk-hotspot java -XshowSettings:vm -version
Max. Heap Size (Estimated): 247.50M
А тут корректно
Т.е. max heap size (estimated) должен быть 25% от того размера памяти которая предоставлена контейнеру?
Прощу прощения за возможно глупый вопрос, но не совсем ясно
источник

L

Loljeene in pro.jvm
Vladimir Samoylov
Т.е. max heap size (estimated) должен быть 25% от того размера памяти которая предоставлена контейнеру?
Прощу прощения за возможно глупый вопрос, но не совсем ясно
Max heap должен быть не больше, чем выделенная контейнеру память.
А вот память которая пойдет в heap как раз раз регулируется флагами *RAMPercentage
источник

VS

Vladimir Samoylov in pro.jvm
Loljeene
Max heap должен быть не больше, чем выделенная контейнеру память.
А вот память которая пойдет в heap как раз раз регулируется флагами *RAMPercentage
Спасибо за информацию
источник

L

Loljeene in pro.jvm
Почему на образе openjdk:15 heap считается от хостовой памяти - вопрос. На adoptopenjdk такого нет.
P.S. хотя перепроверил такая ситуация только на винде с докером в wsl2. На рабочем терминале с убунтой все ок.
источник

VS

Vladimir Samoylov in pro.jvm
Loljeene
Почему на образе openjdk:15 heap считается от хостовой памяти - вопрос. На adoptopenjdk такого нет.
P.S. хотя перепроверил такая ситуация только на винде с докером в wsl2. На рабочем терминале с убунтой все ок.
Да на ubuntu всё думаю хорошо
docker run -m 1GB tomcat:9.0.41-jdk15-openjdk-buster java -XshowSettings:all -version
Max. Heap Size (Estimated): 247.50M
Memory Limit: 1.00G
Effective CPU Count: 12
Memory Soft Limit: Unlimited
Memory & Swap Limit: Unlimited
источник

VS

Vladimir Samoylov in pro.jvm
docker run -m 1GB tomcat:9.0.41-jdk15-openjdk-buster java -XX:InitialRAMPercentage=30 -XX:MaxRAMPercentage=100 -XX:+UseParallelGC -XshowSettings:all -version

JDK15:
   Max. Heap Size (Estimated): 910.50M
   Memory Limit: 1.00G
   Memory Soft Limit: Unlimited
   Memory & Swap Limit: Unlimited

JDK11:
   Max. Heap Size (Estimated): 910.50M
   Using VM: OpenJDK 64-Bit Server VM
   CPUSet Memory Pressure Enabled: false
   Memory Limit: 1.00G
   Memory Soft Limit: Unlimited
   Memory & Swap Limit: 0.00K
   Kernel Memory Limit: Unlimited
   TCP Memory Limit: Unlimited
   Out Of Memory Killer Enabled: true

Т.е. всё же флаг
MaxRAMPercentage
вероятно нужен. Без него будет в Max Heap Size только 247,50M
источник

AE

Alexandr Emelyanov in pro.jvm
Vladimir Samoylov
Есть запущенное приложение без докера и там потребляет больше
На сколько больше? Вообще как определяете? Какой rps в обоих случаях? Сколько потоков у томката и там и там?
источник

AE

Alexandr Emelyanov in pro.jvm
Kostyantin Randomname
я случайно увидел и засмеялся. почти нигде это в 30% всех веб приложений мира?:)
Меньше
источник

VS

Vladimir Samoylov in pro.jvm
Alexandr Emelyanov
На сколько больше? Вообще как определяете? Какой rps в обоих случаях? Сколько потоков у томката и там и там?
есть некоторый процесс долгий, который приложение запускает в отдельном подпроцессе
без докера он выполяется 4 минуты и нагружает CPU на 60% (htop/top)
внутри докера он выполняется 8 минут и нагружает CPU на 30% (htop на хостовой машине)
источник