меня один процесс в контейнере?
Я не хочу страдать, я хочу вжух-вжух, поставил лимит в кубе и погнали.
Надо ли мне постоянно JAVA_OPTS менять?
jvm давно научилась лимиты контейнера подсасывать сама
топ, что надо отсюда удалить? -Xms64m -Xmx3g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -XX:+ExitOnOutOfMemoryError -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90
А в чем смысл xms без alwaysPreTouch?
Вместо xmx можно задавать MaxRAMPercentage
прочитал, неясно зачем почему, ответов нет
Ну, по кране мере, я оставляю xms как раз с этой идеей)
хорошая идея, кстати. Поставлю на 80 и ебись оно конём
Ну кстати я видел рекомендует 70 или 75
типа 30 на офхип дела?
https://t.me/jvmchat/518496
Можешь вместо Xms/Xmx использовать -XX:MaxRAMPercentage к примеру, использую в контейнере, чтобы не менять постоянно размер Xms/Xmx, если меняю объем оперативы для контейнера
Так там больше половины флагов - настройки GC, за вас их точно никто не сделает, если стандартные не устраивают )
я юзаю разные рантаймы и только жвм настолько конченый.
что значит "конченый"? много чего можно настроить? А если выбросить ваши настройки GC - приложение остановится или что произойдёт?
конченый - это вместо автоматического управления всем этим JVM выдаёт мне кучу настроек. Я не хочу кучу настроек, мне хватит кнопки - "sdelay zaebis" (которую я даже нажимать не хочу, и так понятно что я хочу zaebis)
ну и уберите все настройки для начала
так убрал, падало с оом -_- Потому и добавлял
А GC настройки вы осознанно добавили? Если усреднить по опыту, то примерно в процентах так 90 случаев от них ни жарко ни холодно, jvm сама внутри разберётся что когда собирать. Бывают, конечно, и исключения.
нет, честно скажу, не приходя в сознание добавлял, по совету от таких же людей, которые мне выше советовали ЕЩЁ флагов добавить "иначе неправильно".
уберите их, серьёзно, посмотрите что будет
по умолчанию MaxRAMPercentage=25% наверное поэтому и не хватало памяти скорее всего надо было только этот параметр установить побольше значение
Модна ничего не настраивать. Почему вы эти флаги добавили? Вопрос в этом, только не говорите что просто скопипастили с SO
послушал совета наших экспертов. прям как в этом чате.
Я клнечно с докером пока не рабоьал. Но покс для jvm не выставлял флагов. Иногда максимальных размер хипа, что бы память секономить за счет цпу
так то есть кнопка "сделай мне хорошо", просто она во фреймворки встроена. Щас специально перепроверил, когда собираешь образ через спринговый bootBuildImage, он тебе во первых всё по красоте в слои расскладывает, оптимизируя размеры. А еще он интегрирован с https://paketo.io/docs/reference/java-reference/#memory-calculator . В результате, при старте приложения определяется размер доступной памяти, и все флаги автоматически ставятся (понятно, что может не идеально, но над проектом умные люди работают). Вот какие он аргументы автоматом делает для виртуалки с 1 ГБ - https://pastebin.com/9WMyb7rA
Интересно, MaxDirectMemorySize=10M - не маловато ли? 🤔 Я бы вообще убрал, но с другой стороны, лучше оно так упадёт с нормальным сообщением, чем оно упадёт по OOM в контейнере
ага, интересно конечно, почему 10. С ходу никаких внятных ответов не могу нагуглить. Пишут просто про дефолты, и > If not configured, 10M (in the absence of any reasonable heuristic) is used. Я не разу не видел, чтобы кто-то этот флаг руками устанавливал вообще, но конечно наверное есть и особые сценарии, когда оно надо.
> reasonable > 10M 😒 Если нетти по дефолту выделяет память через ByteBuffer.allocateDirect() то это вообще дичь, но я не уверен, что это так. И всё равно фигня какая-то.
Обсуждают сегодня