Назад | Перейти на главную страницу

Куча JVM заменяется местами, что приводит к сбоям в работе GC - Tomcat

Информация:

Количество виртуальных машин = 4, каждая с экземпляром Tomcat 8.5. * в кластере. Приложения = 5 военных приложений - 2 приложения пользовательского интерфейса и 3 веб-службы. Версия Java = java 1.8. * Configuratin = 2 LTMS и 2 веб-сервера Apache - 1 LTM поверх кластеров tomcat, который обрабатывает запросы веб-сервисов (200K + в день в будние дни). Еще один LTM поверх веб-сервера, который также находится поверх экземпляров Tomcat, который обрабатывает запросы приложений пользовательского интерфейса (более 10 тыс. Запросов в день). Параметры JVM: все по умолчанию с -Xms3072m -Xmx3072

Конфигурация Tomcat:

 Connector port="xxxx"                 
       protocol="HTTP/1.1"  
           connectionTimeout="3000"  
           enableLookups="false"  
           redirectPort="yyyy"  
           maxThreads="80"   
Connector port="yyyy"  
          protocol="org.apache.coyote.http11.Http11NioProtocol"  
          redirectPort="yyyy"  
          secure="true"    
          scheme="https"  
          clientAuth="false"  
          sslProtocol="TLS"   
          sslEnabledProtocols="SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2"  
          SSLEnabled="true"  
          maxThreads="70"  
          maxKeepAliveRequests="100"  
          keepAliveTimeout="5000"  
          connectionTimeout="10000"  
          keystoreFile="....."  
          keyPass="..."  
          keystorePass="..."  
          keyAlias="....."  
          truststoreFile="..."  
          truststorePass="..."  
          ciphers="......."        
   Connector port="zzzz"
     scheme="https"     
     protocol="AJP/1.3"     
     redirectPort="yyyy"     

Проблема: нам приходится перерабатывать кота раз в неделю, и мы делаем это в выходные дни. ЕСЛИ не переработан, на 7-й или 8-й день безотказной работы незначительное время сборки мусора увеличивается от 5 до 30 секунд, если все еще не перезапущено, то всякий раз, когда происходит основной сборщик мусора, требуется по крайней мере минута, вызывая несколько неудачных транзакций. Проверяя статус виртуальной машины на всех 4 узлах, за это время мы видим, что происходит много подкачки. Использование памяти все время ниже 55%, а также загрузка процессора ниже 25%. Удивительно, но это происходит в выходные дни, когда нагрузки очень мало или вообще нет. Мы никогда не видели ошибок OOM, но пока что настройка кучи не является проблемой (я могу ошибаться). У нас также есть такая же конфигурация в среде моделирования производства, где нагрузка не такая большая, как на рабочих серверах, и в этой среде нет таких проблем с подкачкой / сборкой мусора. Любое понимание или любой совет по этому поводу были бы большим подспорьем. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Подкачка происходит из-за неактивных страниц памяти, объектов, которые не используются какое-то время, но не подлежат сборке мусора, попробуйте уменьшить подкачку системы до 10%.

Также проверьте использование кэша кода перед переработкой tomcat, это может привести к замедлению со временем.

Попробуйте изменить GC на g1gc и проверьте, должно ли быть меньше пауз STW.