Как установить "MaxPermSize" для Atlassian Fisheye/Crucible, работающего в качестве службы на Win2k3?

Я пытался настроить Atlassian Fisheye/Crucible в качестве службы на Win 2K3 R2 в течение двух недель. Я продолжаю получать различные ошибки "java.lang.OutOfMemoryError: PermGen space", которые приводят к аварийному завершению работы Fisheye и вынуждают меня перезапустить службу.

Я следовал примеру на сайте поддержки Atlassian, чтобы настроить MaxPermSize в оболочке службы. Однако, когда я проверяю SysInfo на страницах администратора Fisheye и в журнале отладки, я не вижу никакого подтверждения. Информация о куче Java находится в обоих местах, поэтому я ожидаю, что параметр MaxPermSize будет отображаться в обоих местах.

Ошибка сохраняется, и поддержка Atlassian мало чем помогла.

Я ценю любую помощь.

1 ответ

Вы можете установить это в своем файле Wrapper.conf. Вот мой конфигурационный файл, и он отлично работает для меня, я использую его с Fisheye 2.6.3, работающим на Windows Server 2008 R2. Этот файл в основном идентичен образцу / конфигурации по умолчанию, с несколькими важными дополнениями, которые я прокомментирую в конце.

#********************************************************************
# Wrapper Properties
#********************************************************************
# Рабочий каталог
wrapper.working.dir =.. /.. /

# Java-приложение
wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe

# Java Основной класс. Этот класс должен реализовывать интерфейс WrapperListener
# или гарантировать, что класс WrapperManager инициализирован. помощник
# классы предоставлены, чтобы сделать это для вас. Смотрите раздел Интеграция
# документации для деталей.
wrapper.java.mainclass = com.cenqua.fisheye.FisheyeServiceWrapper

# Java Classpath (include wrapper.jar) Добавить элементы пути к классу как
# нужно начинать с 1 (добавить lib FIRST, чтобы сначала загружалась конфигурация log4j)
wrapper.java.classpath.1=./fisheyeboot.jar
wrapper.java.classpath.2= обертка / Библиотека /*. банка

# Путь к библиотеке Java (расположение Wrapper.DLL или libwrapper.so)
wrapper.java.library.path.1= обертка / Библиотека
wrapper.java.library.path.2= Lib/ родной / Linux-i386
wrapper.java.library.path.3= Lib/ родной / OSX-РРС
wrapper.java.library.path.4= Lib/ родной / Солярис-СПАРК
wrapper.java.library.path.5= Lib/ родной / win32-x86


# Дополнительные параметры Java
wrapper.java.additional.1=-server
wrapper.java.additional.2=-showversion
wrapper.java.additional.3=-Djava.awt.headless= верно

# JDK 1.5 Дополнительные параметры для jmx
wrapper.java.additional.4=-Dcom.sun.management.jmxremote
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.port=4242
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.authenticate= ложь
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl= ложь
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate= ложь
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.password.file=./ обертку /jmxremote.password
wrapper.java.additional.10=-Dwrapper.mbean.name="wrapper:type= Элемент управления Java Service Wrapper"
wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\ Bin \.."
wrapper.java.additional.12=-XX:MaxPermSize=256m
wrapper.java.additional.13=-Xrs 
wrapper.java.additional.14=-Dfile.encoding=UTF-8


# Начальный размер кучи Java (в МБ)
wrapper.java.initmemory = 64

# Максимальный размер кучи Java (в МБ)
wrapper.java.maxmemory =1024

# Параметры приложения. Добавьте параметры по мере необходимости, начиная с 1
# Первый параметр приложения - это имя класса, основной
# метод должен вызываться при запуске приложения. Класс
# имя сопровождается количеством параметров, которые должны быть переданы в его основной
# метод. Затем идет фактические параметры.

wrapper.app.parameter.1 = com.cenqua.fisheye.FishEyeCtl
wrapper.app.parameter.2 = 1
wrapper.app.parameter.3 = начало

# За параметрами запуска следует имя класса, основной
# метод должен быть вызван, чтобы остановить приложение. Имя класса остановки
# сопровождается флагом, который контролирует, должен ли Wrapper
# дождаться завершения всех потоков, не являющихся демонами, перед выходом из JVM.
# За флагом следует количество параметров, передаваемых
# остановить основной метод класса. Наконец приходит фактические параметры.
wrapper.app.parameter.4=com.cenqua.fisheye.FishEyeCtl
wrapper.app.parameter.5= верно
wrapper.app.parameter.6=1
wrapper.app.parameter.7= остановка

#********************************************************************
Свойства Wrapper Logging
#********************************************************************
# Формат вывода на консоль.  (Смотрите документы для форматов)
wrapper.console.format= М

# Уровень журнала для вывода на консоль.  (См. Документы для уровней журнала)
wrapper.console.loglevel= ИНФО

# Файл журнала, используемый для записи выходных данных оболочки.
wrapper.logfile = Var/ Журнал / wrapper.log

# Формат вывода для файла журнала.  (Смотрите документы для форматов)
wrapper.logfile.format = LPTM

# Уровень журнала для вывода файла журнала.  (См. Документы для уровней журнала)
wrapper.logfile.loglevel= ИНФО

# Максимальный размер, до которого разрешено увеличивать размер файла журнала
# журнал свернут. Размер указывается в байтах. Значение по умолчанию
№ 0, отключает переход по журналу. Может сокращаться до 'k' (kb) или
суффикс #  'm' (mb). Например: 10 м =10 мегабайт.
wrapper.logfile.maxsize = 50m

# Максимальное количество свернутых файлов журнала, которые будут разрешены до старых
# файлы удалены. Значение по умолчанию 0 подразумевает отсутствие ограничений.
wrapper.logfile.maxfiles =10

# Уровень журнала для вывода журнала sys/ событий.  (См. Документы для уровней журнала)
не wrapper.syslog.loglevel = NONE

#********************************************************************
Свойства Windows Wrapper
#********************************************************************
# Название для использования при запуске в качестве консоли
wrapper.console.title = Рыбий

#********************************************************************
# Оболочка Windows NT/2000/XP Свойства службы
#********************************************************************
# ПРЕДУПРЕЖДЕНИЕ. Не изменяйте ни одно из этих свойств, когда приложение
# с использованием этого файла конфигурации был установлен как сервис.
# Пожалуйста, удалите службу перед изменением этого раздела. 
# сервис может быть переустановлен.

# Наименование услуги
wrapper.ntservice.name = Рыбий

# Отображаемое название услуги
wrapper.ntservice.display name = Рыбий

# Описание услуги
wrapper.ntservice.description = Рыбий

# Сервисные зависимости. При необходимости добавьте зависимости, начиная с 1
wrapper.ntservice.dependency.1 =

# Режим, в котором установлена ​​служба.  AUTO_START или DEMAND_START
wrapper.ntservice.starttype = AUTO_START

# Разрешить сервису взаимодействовать с рабочим столом.
wrapper.ntservice.interactive = ложь

Интересные Линии

wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe

Полный путь к исполняемому файлу JSK-сервера. Обратите внимание, загрузите полный JDK, а не только JRE.

wrapper.java.additional.11 = -Dfisheye.inst = "C: \ Atlassian \ fecru-2.6.3 \ бен.."
wrapper.java.additional.12 = -XX: MaxPermSize = 256m
wrapper.java.additional.13 = -Xrs
wrapper.java.additional.14 = -Dfile.encoding = UTF-8

Ничего из вышеперечисленного не показано в документации Atlassian, я добавил их с течением времени методом проб и ошибок. Когда FeCru впервые запускается в служебной оболочке, он может прекратить работу с ошибкой нехватки памяти, строка MaxPermSize исправляет это.

Я также обнаружил, что необходимо указать FISHEYE_INST, как показано выше. Я понятия не имею, почему путь указан с /.. в конце концов, это было так в примере, который я нашел. Несомненно, какой-нибудь ритуал приготовления Линукса. Другие строки, я не могу вспомнить, для чего они были, но я добавил их по тем или иным причинам и не задокументировал почему. Никто не идеален;-)

wrapper.java.initmemory = 64 wrapper.java.maxmemory =1024

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

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