Как настроить параметры памяти Tomcat 5.5 JVM без использования программы конфигурации

Мне нужно настроить параметры памяти Tomcat как часть более крупной установки, поэтому ручная настройка tomcat с помощью приложения конфигурации после факта не может быть и речи. Я думал, что могу просто добавить настройки памяти JVM в переменную среды JAVA_OPTS, но я тестирую это с помощью jconsole, чтобы увидеть, работает ли он, а он ... нет.

Согласно комментарию ниже, CATALINA_OPTS тоже не работает. Пока что единственный способ заставить его работать - через графический интерфейс конфигурации Tomcat, и это неприемлемое решение моей проблемы.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
42
0
138 762
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Используйте переменную среды CATALINA_OPTS.

Я тоже пробовал CATALINA_OPTS. Я почти уверен, что это работает только для Tomcat 4.0 и более ранних версий.

red 13.11.2008 05:27

Я могу гарантировать, что он работает на 5.0.28. Проверьте startup.bat / sh и catalina.bat / sh, чтобы узнать, что используется. Возможно, вы передаете аргументы в неправильном формате?

matt b 13.11.2008 05:50

Не уверен, что это будет подходящее решение для вас. Но единственный способ контролировать настройки памяти tomcat, а также количество подключений и т. д., Который действительно работает для нас, - это Лямбда-зонд.

Он показывает большую часть информации, которая нам нужна для настройки Tomcat. Мы тестировали его с Tomcat 5.5 и 6.0, и он отлично работает, несмотря на статус бета-версии и дату последнего обновления в конце 2006 года.

Если вы запускаете Tomcat вручную (не как службу), то вам подойдет переменная среды CATALINA_OPTS. Если вы запустите его как службу, настройки, вероятно, хранятся где-то в реестре. На моем компьютере установлен Tomcat 6, и я нашел настройки в ключе HKLM\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java.

Чтобы добавить к предыдущему комментарию, документация для инструмента командной строки для обновления настроек службы Tomcat (если Tomcat работает как служба в Windows) - это здесь. Этот инструмент обновляет реестр с правильными настройками. Поэтому, если вы хотите обновить параметр максимальной памяти для службы Tomcat, вы можете запустить это (из каталога tomcat / bin), предполагая имя службы по умолчанию Tomcat5:

tomcat5 //US//Tomcat5 --JvmMx=512

Создайте файл setenv. (Sh | bat) в каталоге tomcat / bin с переменными среды, которые вы хотите изменить.

Сценарий catalina проверяет, существует ли сценарий setenv, и запускает его для установки переменных среды. Таким образом, вы можете изменить параметры только для одного экземпляра tomcat, и его будет проще скопировать в другой экземпляр.

Вероятно, ваше приложение конфигурации создало сценарий setenv, и поэтому tomcat игнорирует переменные среды.

Это решение, дополненное решением Гленна, мне понравилось.

Elliot Vargas 23.03.2010 18:04
Ответ принят как подходящий

Предложение Сергея работает, и вот некоторые подробности.

Если вы заглянете в каталог bin вашей установки, вы увидите catalina.sh или .bat скрипты. Если вы посмотрите в них, вы увидите, что они запускают setenv.sh или setenv.bat скрипт соответственно, если он существует, для установки переменных среды. Соответствующие переменные среды описаны в комментариях на вверху catalina.sh/bat. Для их использования создайте, например, файл $ CATALINA_HOME / bin / setenv.sh с содержимым

export JAVA_OPTS = "-server -Xmx512m"

Для Windows вам понадобится в setenv.bat что-то вроде

set JAVA_OPTS=-server -Xmx768m

Надеюсь это поможет, Гленн

«Другое» руководство не добавило команду «export», и tomcat не запустился. Я должен был понять это, так как это, в конце концов, файл .sh ... но спасибо за то, что так хорошо изложил его для сонного кодировщика ...

jsh 22.02.2012 19:23

По какой-то причине пакет RPM (например, в CentOS) для tomcat6 имеет init.d, который не использует catalina.sh (который вызывает setnev.sh), другими словами - в CentOS / etc / tomcat6 / tomcat6. conf место для таких конфигураций

Eran Medan 30.04.2014 23:18

Я использую следующее содержимое setenv.bat:

==============setenv.bat============

    set JAVA_OPTS=-XX:MaxPermSize=256m -Xms256M -Xmx768M -Xdebug -Xnoagent  -Xrunjdwp:transport=dt_socket,address=7777,server=y,suspend=n %JAVA_OPTS%

====================================

Он также включает отладку и устанавливает порт отладки на 7777, а также добавляет предыдущее содержимое JAVA_OPTS.

Удобно для виртуальных машин Linux; Используйте для Tomcat 75% общей системной памяти. Ура AWK.

Поместите в начало "{tomcat} /bin/startup.sh"

export CATALINA_OPTS = "-Xmx`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.75 } '`k"

Мне нравится идея настроить память tomcat6 на основе доступной памяти сервера (это круто, потому что мне не нужно менять настройку после обновления оборудования). Вот моя (немного расширенная настройка памяти):

export CATALINA_OPTS = "-Xmx`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.75 } '`k -Xms`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.75 } '`k -XX:NewSize=`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.15 } '`k -XX:MaxNewSize=`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.15 } '`k -XX:PermSize=`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.15 } '`k -XX:MaxPermSize=`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.15 } '`k"

Поместите его в: "{tomcat} /bin/startup.sh" (например, "/ usr / share / tomcat6 / bin" для Ubuntu 10.10)

Если вы используете Ubuntu 11.10 и apache-tomcat6 (установка из apt-get), вы можете поместить эту конфигурацию в /usr/share/tomcat6/bin/catalina.sh

# -----------------------------------------------------------------------------

JAVA_OPTS = "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m \
-Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m \
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"

После этого вы можете проверить свою конфигурацию с помощью ps -ef | grep tomcat :)

Просто отредактируйте свой скрипт catalina / bin / startup.sh. Добавьте в него следующие команды:

#Adjust it to the size you want. Ignore the from bit.
export CATALINA_OPTS = "-Xmx1024m"
#This should point to your catalina base directory 
export CATALINA_BASE=/usr/local/tomcat
#This is only used if you editing the instance of your tomcat
/usr/share/tomcat6/bin/startup.sh

Sailab: http://www.facejar.com/member/page-id-477.html

Если вы запускаете Tomcat в Windows, вы можете использовать изящное приложение «Tomcat Monitor», которое поставляется с Tomcat.

Перейдите на вкладку Java. Внизу, под текстовым полем «Параметры Java», вы найдете 3 поля ввода:

  • Начальный пул памяти ___ МБ
  • Максимальный пул памяти ___ МБ
  • Размер стека потоков _____ КБ

Я изменил это и сохранил, но когда я пытаюсь запустить его снова, tomcat не запускается. Как только я вернусь к размеру памяти по умолчанию, я снова смогу запустить tomcat. Подскажите, пожалуйста, что делать?

Ankita 10.03.2015 16:29

@Ankita Я больше не работаю с Tomcat ... это слишком сложно. Я перешел на Node.js

Erel Segal-Halevi 10.03.2015 21:12

Хорошо. Благодарю за ваш ответ.

Ankita 11.03.2015 07:35

В моем случае был файл /etc/sysconfig/tomcat5.conf, перезаписывающий все настройки в /etc/tomcat5/tomcat5.conf

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