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

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

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


person red    schedule 13.11.2008    source источник


Ответы (13)


Предложение Сергея работает, и вот еще кое-что.

Если вы посмотрите в каталог 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

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

person Glenn    schedule 03.12.2008
comment
Какой-то другой гид забыл ввести команду экспорта, и tomcat не запустился. Я должен был понять это, так как это, в конце концов, файл .sh ... но спасибо за то, что так хорошо объяснил это для сонного кодера ... - person jsh; 22.02.2012
comment
По какой-то причине пакет RPM (например, в CentOS) для tomcat6 имеет файл init.d, который не использует catalina.sh (который вызывает setnev.sh), другими словами — в CentOS /etc/tomcat6/tomcat6. conf - место для таких конфигураций - person Eran Medan; 30.04.2014

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

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

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

person Serxipc    schedule 28.11.2008
comment
Это решение, дополненное решением Гленна, хорошо сработало для меня. - person Elliot Vargas; 23.03.2010

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

person matt b    schedule 13.11.2008
comment
Я тоже пробовал CATALINA_OPTS. Я почти уверен, что это работает только для Tomcat 4.0 и более ранних версий. - person red; 13.11.2008
comment
Я могу гарантировать, что это работает для 5.0.28. Проверьте startup.bat/sh и catalina.bat/sh, чтобы узнать, что используется. Возможно, вы передаете аргументы в неправильном формате? - person matt b; 13.11.2008

Если вы используете 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 | грэп кот :)

person martinusadyh    schedule 21.11.2011

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

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

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

Я использую следующее содержимое 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.

person Dmitriy Kochergin    schedule 06.09.2010

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

tomcat5 //US//Tomcat5 --JvmMx=512
person Cozzman    schedule 18.11.2008

Мне нравится идея установки памяти 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)

person Ondrej Kvasnovsky    schedule 13.11.2011

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

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

person FoxyBOA    schedule 13.11.2008

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

person kgiannakakis    schedule 13.11.2008

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

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

  • Исходный пул памяти ___ МБ
  • Максимальный пул памяти ___ МБ
  • Размер стека потоков _____ КБ
person Erel Segal-Halevi    schedule 20.06.2012
comment
Я изменил это и сохранил. Но когда я пытаюсь запустить его снова, кот не запускается. Как только я вернусь к размеру памяти по умолчанию, я смогу снова запустить tomcat. Не могли бы вы подсказать, что делать? - person Ankita; 10.03.2015
comment
@Ankita Я больше не работаю с Tomcat... это слишком сложно. Я перешел на Node.js - person Erel Segal-Halevi; 10.03.2015
comment
Хорошо. Благодарю за ваш ответ. - person Ankita; 11.03.2015

Просто отредактируйте свой сценарий 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

person Community    schedule 30.04.2012

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

person Torge    schedule 22.03.2016