Де встановити параметри купівлі Java (наприклад, -Xmx) для Tomcat 6 під Ubuntu 9.04?


36

Я запускаю 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 . Але я хотів отримати другу думку. Хтось хоче підтвердити, що немає кращого способу?

Відповіді:


37

Принаймні, на Ubuntu 10.04, /etc/init.d/tomcat6 source / etc / default / tomcat6, якщо він існує. Саме тут я помітив свої рішення, і я вважаю, що це, як правило, "затверджений" спосіб внесення таких змін.


7
/ etc / default / tomcat6 є належним місцем
Amala

+1 Налаштування завжди слід робити, /etcякщо це можливо.
Маркус Даунінг

2
У CentOS місце, яке я знайшов, було /etc/tomcat6/tomcat6.conf
khylo

1
У CentOS 6.4 /etc/tomcat6/tomcat6.conf- це великий файл, і я не хотів розміщувати там свої особисті налаштування, тому я створив його $CATALINA_HOME/bin/setenv.shі запустив його до нього /usr/sbin/tomcat6. Сподіваюся, це допомагає користувачам CentOS (так, я знаю, що початкове питання стосувалося Ubuntu).
DuffJ

@khylo так, трохи зайняв мене, щоб зрозуміти це. здається, що в CentOS /etc/init.d/tomcat6 викликає / usr / sbin / tomcat6, який НЕ викликає catalina.sh, а просто викликає клас завантажувача tomcat безпосередньо (на відміну від Ubuntu /etc/init.d/tomcat6, що дзвонить catalina.sh)
Еран Медан

16

Якщо ви заглянете у каталог бін своєї установки, ви побачите сценарії 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


1
Добре працює для систем без / etc / default / включає, наприклад, FreeBSD.
vadipp

7

Шукайте /etc/tomcat6/tomcat6.conf, який має подібні форми JAVA_OPTS, і чекаю, коли ви будете коментувати (але лише якщо у вас це є, я використовую Centos not 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"

4
Це здається правильним для CentOS / yum / RPM версії tomcat. Для пакету Ubuntu / apt-get пакет setenv.sh - це правильний шлях AFAIK
Eran Medan

так, KCD є правильним, бо centOS tomcat6.conf працює добре. Перевірено за допомогою команди ps aux | grep tomcat, він показує параметр із встановленими значеннями.
Манікандан Аруначалам

2

Найелегантніший спосіб, який я зараз знайшов, - це редагувати /etc/init.d/tomcat6 і додати це у верхній частині файлу:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

Інші варіанти, які я окреслив у своєму питанні, схоже, не спрацьовують. Вивчивши сценарій і експериментуючи ще, я сумніваюся, що /usr/share/tomcat6/bin/catalina.sh та /usr/share/tomcat6/bin/startup.sh відіграють будь-яку роль у запуску tomcat з пакетом Ubuntu tomcat6. Натомість; /etc/init.d/tomcat6 повністю замінює будь-яку роботу, яку, як правило, може виконувати catalina.sh/startup.sh.

Я все ще трохи переживаю, як втратити ці параметри конфігурації в майбутньому оновлення пакета, але я думаю, якщо це станеться, відновити їх буде досить просто.


Чи можна це встановити (експортувати) у .bashrc для будь-якого користувача, якого ви хочете, щоб запускається tomcat? [будь ласка, вибачте жахливу граматику] Це переживе оновлення пакету Tomcat і т. д. Я припускаю, що об'єкт "run-as" init запустить звичайний оболонку для цього користувача і підбере завдання. Дивіться також howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
Девід Дж. Лішевський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.