Вопрос: Tomcat- Как проверить используемые в настоящее время параметры памяти


Я установил сервер Tomcat с использованием Server 2008 и IIS 7.
Как я могу определить, действительно ли используется переменная среды JAVA_OPTS?

Ранее я слышал, что мне нужно отредактировать файл service.bat, чтобы использовать переменную среды JAVA_OPTS, но как я могу узнать, успешно ли это?

Я не смог узнать, есть ли способ просмотреть это в журналах или что-то еще более количественное. Единственный способ, который я мог бы попытаться проверить, - это отредактировать переменную и попытаться определить, есть ли разница в производительности. Я установил JAVA_OPTS следующим образом:

-server -Xmx1k -Xms1k-Xmn1k -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:PermSize=1k -XX:MaxPermSize=1k  

Кроме того, я нашел документацию, говорящую, чтобы изменить следующую строку в service.bat:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256

чтобы:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" %JAVA_OPTS%

У меня не было ошибок при запуске команды

service install ServiceName

Пока все работает так быстро, как всегда, до того, как я переустановил сервис с измененными настройками памяти, заставив меня подумать, что JAVA_OPTS ни на что не влияет.

Извините, если речь идет о широком вопросе, но я не нашел хорошего вывода, чтобы уйти от того, что происходит на заднем плане. Может ли кто-нибудь пролить свет на это?


6
2017-07-25 16:36


Источник


Вместо futzing с .bat-файлами вы должны использовать утилиту Tomcat7w.exe для изменения параметров службы. - user207421


Ответы:


Хорошо, я нашел информацию, которую искал, поэтому я собираюсь принять свой ответ, потому что я даю более подробную информацию, но +1 Дэвиду Левеску для потенциальных клиентов.

Я узнал, что настройки памяти, которые я пытался установить, не использовались. Чтобы изменить настройки памяти, я использовал tomcat7w в папке \ bin.

Выполните следующую команду:

tomcat7w //ES//<ServiceName>

Затем должно появиться следующее:

Java Service Manager

Нажмите вкладку Java, которая подчеркнута, и добавьте аргументы в выделенные области.


Чтобы проверить это, я использовал исполняемый файл jinfo (в папке \ bin). Jinfo выводит информацию о конфигурации Java для данного Java-процесса. Запустите эту команду, используя следующий синтаксис:

jinfo -flags PID-of-Tomcat-executable

Следующий небольшой скрипт спас меня от времени, чтобы каждый раз обнаруживать ПИД-регулятор Tomcat, поэтому я решил, что могу опубликовать его здесь:

@echo off
for /f "tokens=1,2 delims= " %%i in ('=tasklist ^| findstr "tomcat"') do (
    echo Tomcat Executable = %%i
    echo Tomcat Process ID = %%j
    set tomcat_pid=%%j
)
echo %tomcat_pid%
%JAVA_HOME%\bin\jinfo -flags %tomcat_pid%

6
2017-08-07 21:59





Вы можете использовать jinfo которая поставляется вместе с JDK для запроса флагов VM и свойств системы во время выполнения.


3
2017-07-25 18:14



Хорошо, похоже, это то, что я ищу, но я не могу заставить его работать. Я выполнил следующую команду в своем командном файле:% JAVA_HOME% \ bin \ jinfo -flag ParallelGCThreads% tomcat_pid%, и я получаю следующее сообщение: Недостаточно памяти для обработки этой команды - OrangeGrover
Эта ошибка чаще всего встречается при запуске Tomcat в качестве службы Windows. Такие инструменты, как jinfo, не могут добраться до службы из-за ограничений безопасности. Один из вариантов - запустить Tomcat из командной строки. Если вы хотите, чтобы он работал как служба, есть способы сделать это, но они требуют немного работы. Например: stackoverflow.com/questions/906620/... - David Levesque
Круто, спасибо за лидерство. - OrangeGrover
Вам нужно запустить эту команду как один и тот же пользователь, запускающий java-процесс, поэтому, если у вас есть эта ошибка: DebuggerException, попробуйте, например. sudo -u tomcat jinfo 2976 - Jose Alban