Как установить "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
Распределение памяти кучи увеличилось по умолчанию - я проиндексировал некоторые довольно мясные репозитории, и я мог бы позволить себе дополнительные ресурсы - вы можете сойти с рук с меньшими выделениями по умолчанию.