Веб-приложение jruby, развернутое на сервере Glassfish, со временем замедляется

Я развернул файл war моего приложения jruby на сервере Glassfish. я заметил, что мое приложение становится медленным с течением времени. Мой сервер имеет 30 ГБ ОЗУ, но приложение работает очень медленно.

Каждый метод ruby ​​в моем приложении создает массив, который содержит около 1 миллиона записей. Я думаю, что создание такого большого массива вызывает проблемы с памятью и, следовательно, приложение становится медленным. если это так, то какую настройку можно выполнить, чтобы избежать такой проблемы с памятью.

Ниже мои настройки памяти для Java

uintx AdaptivePermSizeWeight                    = 20              {product}
 intx CompilerThreadStackSize                   = 0               {pd product}
uintx ErgoHeapSizeLimit                         = 0               {product}
uintx HeapSizePerGCThread                       = 87241520        {product}
uintx InitialHeapSize                          := 1055640320      {product}
uintx LargePageHeapSizeThreshold                = 134217728       {product}
uintx MaxHeapSize                              := 16890462208     {product}
uintx MaxPermSize                               = 174063616       {pd product}
uintx PermSize                                  = 21757952        {pd product}
 intx ThreadStackSize                           = 1024            {pd product}
 intx VMThreadStackSize                         = 1024            {pd product}
java version "1.7.0_101"
OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

Спасибо

1 ответ

Я рекомендую установить Xms16G Xms16G с параметром -server для производственной среды. Некоторые метрики необходимы, чтобы помочь идентифицировать проблему, предоставьте эту информацию, когда сервер начинает работать медленно:

Системная память для процессов Java (RSS сверху)

Размер PermGen (используйте jmc или jvisualm)

Размер CodeCahe (используйте jmc): возможно, проблема также в том, что вы печатаете максимальный размер (java -XX:+PrintFlagsFinal | grep ReservedCodeCacheSize).

Другие вопросы по тегам