Снижение производительности Tomcat при большом объеме памяти виртуальной машины

#java #tomcat #garbage-collection #jvm

#java #tomcat #сбор мусора #jvm

Вопрос:

Есть ли какие-либо причины, по которым Tomcat не должен запускаться в JVM с огромной памятью виртуальной машины? Знаете ли вы какие-либо цифры или какие-либо причины, по которым желательно иметь несколько экземпляров tomcat на одном хосте вместо одного?

На мой взгляд, это зависит от производительности используемого GC. Но, возможно, есть и другие причины, по которым tomcat должен жить в виртуальной машине с выделенным не слишком большим объемом памяти. Есть ли какие-либо причины, по которым было бы целесообразно иметь несколько экземпляров tomcat на одном хосте только для уменьшения объема памяти отдельных виртуальных машин?

Ответ №1:

Пара идей, связанных с преимуществом нескольких серверов / меньшей кучи по сравнению с одной / огромной кучей:

  1. У вас будет единственная точка отказа, если вы используете одну машину — у вас могут быть ошибки Tomcat или некоторые ошибки в развернутых приложениях, что требует перезапуска JVM (время простоя несколько секунд / минут).
  2. Большая коллекция gargabe займет больше времени в огромной куче по сравнению с меньшей.

Комментарии:

1. Это все еще верно (2.) для нового G1 GC?

2. @lewap, если G1 необходимо выполнить полное уплотнение GC , это будет еще медленнее, но основная идея заключается в том, что этого делать не следует.