Я запускаю Tomcat, используя пакет tomcat6 из Ubuntu 9.04, который превращает Tomcat в демона с помощью jsvc. Я хотел бы знать, как правильно установить параметры кучи Java, например -Xmx
для Tomcat. Я хотел бы разместить конфигурацию там, где это наиболее стилистически правильное, и где это наименее вероятно будет перезаписано обновлениями пакета Ubuntu.
Варианты, которые я вижу прямо сейчас:
/etc/init.d/tomcat6
./usr/share/tomcat6/bin/catalina.sh
./usr/share/tomcat6/bin/startup.sh
чтобы установить CATALINA_OPTS на желаемые флаги, а затем экспортировать CATALINA_OPTS как переменную среды. (Похоже, его подберет catalina.sh
.)Последний вариант звучит как лучший, и его рекомендуют (без объяснения причин) на Увеличение объема кучи Java в сценарии запуска Tomcat. Но я хотел получить второе мнение. Кто-нибудь хочет подтвердить, что лучшего способа нет?
По крайней мере, в Ubuntu 10.04 /etc/init.d/tomcat6 sources / etc / default / tomcat6, если он существует. Здесь я помещаю свои переопределения и считаю, что это обычно «одобренный» способ внесения таких изменений.
Если вы заглянете в каталог 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
Это верно для Tomcat 5.5–7. Оригинальный ответ. https://stackoverflow.com/questions/286007/how-to-tune-tomcat-5-5-jvm-memory-settings-without-using-the-configuration-progra
Искать /etc/tomcat6/tomcat6.conf в котором есть подобные JAVA_OPTS, готовые и ждущие, когда вы раскомментируете (но только если он у вас вообще есть, я использую Centos, а не Ubuntu).
# System-wide configuration file for tomcat6 services
# This will be sourced by tomcat6 and any secondary service
# Values will be overridden by service-specific configuration
# files in /etc/sysconfig
#
# Use this one to change default values for all services
# Change the service specific ones to affect only one service
# (see, for instance, /etc/sysconfig/tomcat6)
#
...
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
Самый элегантный способ, который я нашел до сих пор, - это отредактировать /etc/init.d/tomcat6 и добавить это в начало файла:
# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m
Другие варианты, которые я изложил в своем вопросе, похоже, не работают. Изучив сценарий и поэкспериментировав еще немного, я сомневаюсь, что /usr/share/tomcat6/bin/catalina.sh и /usr/share/tomcat6/bin/startup.sh играют какую-либо роль в запуске tomcat с пакетом tomcat6 Ubuntu. Вместо; /etc/init.d/tomcat6 полностью заменяет любую работу, которую обычно выполняет catalina.sh/startup.sh.
Я все еще немного беспокоюсь о потере этих параметров конфигурации в будущем обновлении пакета, но я думаю, если это произойдет, их будет довольно легко восстановить.