JVM -XX:MaxRAMPercentage не применяется в контейнереJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 JVM -XX:MaxRAMPercentage не применяется в контейнере

Сообщение Anonymous »

Я пытаюсь запустить Java-приложение, которому требуется большая куча. Он работает на AWS ECS внутри контейнера. На хосте с 128 ГБ ОЗУ. Контейнеру назначено ~115 ГБ.
Dockerfile основан на eclipse-temurin:11
Я запускаю с опцией - XX:MaxRAMPercentage=85.0, а также -XX:+PrintFlagsFinal, чтобы получить отзыв. Это то, что я получаю в сокращении (слишком велико для SO). Полные флаги здесь https://pastebin.com/jm7Md2c8

Код: Выделить всё

2023-01-17 11:02:40      bool MaxFDLimit                               = true                                      {product} {default}
2023-01-17 11:02:40     uintx MaxGCMinorPauseMillis                    = 18446744073709551615                      {product} {default}
2023-01-17 11:02:40     uintx MaxGCPauseMillis                         = 200                                       {product} {default}
2023-01-17 11:02:40     uintx MaxHeapFreeRatio                         = 70                                     {manageable} {default}
2023-01-17 11:02:40    size_t MaxHeapSize                              = 32178700288                               {product} {ergonomic}
2023-01-17 11:02:40      intx MaxInlineLevel                           = 15                                        {product} {default}
2023-01-17 11:02:40      intx MaxInlineSize                            = 35                                        {product} {default}
2023-01-17 11:02:40    size_t MaxMetaspaceExpansion                    = 5451776                                   {product} {default}
2023-01-17 11:02:40     uintx MaxMetaspaceFreeRatio                    = 70                                        {product} {default}
2023-01-17 11:02:40    size_t MaxMetaspaceSize                         = 18446744073709547520                      {product} {default}
2023-01-17 11:02:40    size_t MaxNewSize                               = 19306381312                               {product} {ergonomic}
2023-01-17 11:02:40      intx MaxNodeLimit                             = 80000                                  {C2 product} {default}
2023-01-17 11:02:40  uint64_t MaxRAM                                   = 137438953472                           {pd product} {default}
2023-01-17 11:02:40     uintx MaxRAMFraction                           = 4                                         {product} {default}
2023-01-17 11:02:40    double MaxRAMPercentage                         = 85.000000                                 {product} {command line}
2023-01-17 11:02:40      intx MaxRecursiveInlineLevel                  = 1                                         {product} {default}
2023-01-17 11:02:40     uintx MaxTenuringThreshold                     = 15                                        {product} {default}
2023-01-17 11:02:40      intx MaxTrivialSize                           = 6                                         {product} {default}
2023-01-17 11:02:40      intx MaxVectorSize                            = 32                                     {C2 product} {default}
2023-01-17 11:02:40    size_t MetaspaceSize                            = 21807104                               {pd product} {default}
2023-01-17 11:02:40      bool MethodFlushing                           = true                                      {product} {default}
2023-01-17 11:02:40    size_t MinHeapDeltaBytes                        = 4194304                                   {product} {ergonomic}
2023-01-17 11:02:40     uintx MinHeapFreeRatio                         = 40                                     {manageable} {default}
2023-01-17 11:02:40      intx MinInliningThreshold                     = 250                                       {product} {default}
2023-01-17 11:02:40      intx MinJumpTableSize                         = 10                                  {C2 pd product} {default}
2023-01-17 11:02:40    size_t MinMetaspaceExpansion                    = 339968                                    {product} {default}
2023-01-17 11:02:40     uintx MinMetaspaceFreeRatio                    = 40                                        {product} {default}
2023-01-17 11:02:40     uintx MinRAMFraction                           = 2                                         {product} {default}
2023-01-17 11:02:40    double MinRAMPercentage                         = 50.000000                                 {product} {default}
2023-01-17 11:02:40     uintx MinSurvivorRatio                         = 3                                         {product} {default}
2023-01-17 11:02:40      bool UseContainerSupport                      = true                                      {product} {default}
Таким образом, кажется разумным, JVM обнаружила, что оперативная память хоста MaxRAM = 137438953472 = 128 ГБ, опция MaxRAMPercentage = 85.000000 была установлена ​​правильно. UseContainerSupport = true, поэтому я понимаю, что эти параметры следует применять.
Поэтому я не понимаю, почему MaxHeapSize = 32178700288, что составляет всего ~29,9 ГБ? Я думаю, что контейнеру назначена 1/4 от 115 ГБ, что означает, что мои настройки не применяются. Почему?
Тестирование локально с помощью

Код: Выделить всё

docker run --memory='2g' eclipse-temurin:11 java -XX:MaxRAMPercentage=85.0 -XX:+PrintFlagsFinal -version | grep MaxHeapSize
Похоже, что при изменении назначенной памяти контейнера и MaxRAMPercentage работает должным образом

Подробнее здесь: https://stackoverflow.com/questions/751 ... -container
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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