2013-11-08 2 views
8

Я только что узнал, что TeamCity работает по 32-разрядной JVM в Windows по какой-то причине.Как запустить TeamCity на 64-битной JVM

Я вижу ошибки памяти, регистрируемые при проверке большой (не такой большой) Git repo, и я уже на максимальном размере кучи для JVM. Я ничего не знаю о Java или JVM, или TomCat.

Как запустить TeamCity на современной 64-битной JVM? Я чувствую, что это будет боль, иначе это будет по умолчанию.

Мы крошечная команда, и если что-то не имеет уровней Apple, «это просто работает», мы пропустим ее.

Мы можем жить с этим проектом не на сервере CI, но было бы неплохо узнать, что задействовано и взвесить инвестиции.

Любые советы, оцененные.

Редактировать

Хорошо, так Markus указал на этот фрагмент кода (который я читал), но я не могу увидеть любую информацию, там объяснить, что делать.

Использование 64-разрядной Java для запуска TeamCity Server TeamCity может работать как под 32, так и с 64-разрядной JVM. Рекомендуется использовать 32-битную JVM, если вам не нужен , чтобы выделить более 1,3 ГБ памяти для процесса TeamCity.

Если вы решили использовать 64-разрядную JVM, пожалуйста, обратите внимание, что использование памяти почти в два раза при переходе от 32 до 64 бит виртуальной машины Java, поэтому, пожалуйста , что вы указали, по крайней мере в два раза больше памяти, чем для 32-разрядной JVM, см Настройка параметров памяти для сервера TeamCity.

Если вы запустили TeamCity в качестве сервиса и переключитесь на бит x64, вам также понадобится использовать x64 Tomcat-исполняемые файлы, см. Больше.

Я что-то пропустил?

Edit 2

Ах, хорошо, утопает в некоторых пунктах выше, что это ссылка:

«, если работать в качестве службы Windows, и хотите обновить JRE 64 бит версию, вы будете необходимо заменить \ jre соответствующими JRE "

Поэтому, я думаю, мне нужно скопировать некоторые файлы в папку/jre?

+1

http: //confluence.jetbrains.com/display/TCD7/Установка + и + Конфигурирование + + TeamCity + Server # Установка и конфигурацияTeamCityServer-Using64bitJavatoRunTeamCityServer –

ответ

0

Урок из обновленного вопроса имел ссылку в оригинале, указывая на instructions on Java update for TeamCity server в онлайн-документе TeamCity.

В основном инструкции различаются в зависимости от используемого дистрибутива TeamCity и способа запуска сервера.

Если вы намерены увеличить объем памяти для сервера TeamCity, обязательно прочитайте corresponding section на той же странице документа.

Еще одно примечание: недавние версии TeamCity выполняют Git-выборку в отдельном процессе, а проблемы с памятью Git во время извлечения могут потребовать точной настройки corresponding options.

+2

Примечание для себя: Пришлось проверить после установки 8.1, поскольку он перезаписал JRE. Необходимо установить 64-разрядную версию Java 1.7, а затем скопировать папку Program Files/jre7 в пустую папку TeamCity \ jre. –

+0

Это полезно. Я приземлился здесь, потому что мое соединение MSSQL терпело неудачу после обновления TeamCity, и оказалось, что это связано с тем, что обновление вернуло JRE к 32-разрядной версии. – Chadwick

+0

@ LukePuplett, нет ли здесь ничего другого? Просто установите Java-64-разрядную версию с помощью установщика, а затем перезапишите содержимое папки 'TeamCity \ jre'? Кажется, слишком легко быть правдой ... –

1

«Значит, мне нужно скопировать некоторые файлы в папку/jre?»

No. Вы установить 64-разрядной JRE и обновлять соответствующую настройку в точке на установке JRE 64-х бит.

Не копируйте материал из одной установки JRE в другую. Вы сломаете вещи!

+0

Привет, Стивен, на самом деле он включал копирование файлов. Я не парень Java, но я чувствую, что TeamCity в Windows не делает что-то вроде обычного приложения Windows Java. Переименовать старую папку TeamCity/jre и заменить ее копией из недавно установленной папки JRE, и это был процесс, который рекомендует JetBrains. –

+0

Простейшее решение - убедиться, что установлена ​​переменная среды JAVA_HOME. Затем завершение работы TeamCity и любого другого процесса Java с использованием встроенной JRE TeamCity; вам, возможно, придется обратиться к диспетчеру задач, чтобы отключить эти процессы. Затем переименуйте папку «jre» в TeamCity в нечто вроде «jre_dist» и перезапустите TeamCity. Если вы хотите использовать другое значение памяти, добавьте переменную среды TEAMCITY_SERVER_MEM_OPTS и задайте нужные параметры памяти, если TeamCity работает при добавлении этой переменной окружения, перезапустите TeamCity. Агенты сложнее и другой вопрос. – jgifford25

5

Как я сделал его работу (TeamCity 8, Windows Server 2008 R2):

  • Установите 64-разрядную версию JRE на целевой машине, теперь есть два способа сделать это

  • A -> Если вы используете пакет JRE, входящий в состав Teamcity, замените папку JRE ([папка сервера TC] \ JRE) на папку JRE во вновь установленной JRE x64 - вам нужно закрыть службу сервера TC (вместе со всеми java.exe * 32 службы, которые могут также использовать эту JRE)

  • B -> Изменить TeamCity Внутренние свойства, чтобы указать на недавно установленной JRE x64 (see documentation for TC version 8, TC version 9 can be found here):

    java.home=C\:\\<JRE x64 install folder>\\jre 
    java.ext.dirs=C\:\\<JRE x64 install folder>\\jre\\lib\\ext\;C\:\\Windows\\Sun\\Java\\lib\\ext 
    java.library.path=C\:\\<JRE x64 install folder>\\jre\\bin\;C\:\\Windows\\Sun\\Java\\bin\;C\:\\Windows\\system32\;C\:\\Windows\;C\:\\local\\Oracle\\clients\\112_64\\bin\;C\:\\local\\Oracle… 
    
  • Альтернативой к точке B будет изменить Переменная окружения JAVA_HOME, оно `s более простой, но это требует перезагрузки Windows Server после этого

  • Если запустить службу TC Server, теперь он должен работать в качестве 64-разрядного процесса Java (chceck через PID в диспетчере задач):

Resource Monitor Task Manager

+0

В TeamCity 8.1.5 я хотел использовать свои локальные 64-разрядные JRE. Просто установить env var JAVA_HOME было недостаточно, мне также пришлось переименовать /jre в jre.old, чтобы сервер использовал 64-битную JRE. – Vilmir

+0

Спасибо @Vilmir, этот обходной путь работал для меня также с TeamCity 2017.2.2. – Craigology

Смежные вопросы