Как запустить TeamCity на 64-битной JVM

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

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

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

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

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

Любой совет приветствуется.

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

Итак, Маркус указал на этот фрагмент (который я прочитал), но я не вижу там никакой информации, объясняющей, что делать.

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

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

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

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

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

Ах, ладно, в некоторых параграфах выше эта ссылка такова:

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

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

3 ответа

Решение

Фрагмент обновленного вопроса содержал ссылку в оригинале, указывающую на инструкции по обновлению Java для сервера TeamCity в онлайн-документе TeamCity.

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

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

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

Как я это сделал (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 ( см. Документацию для TC версии 8, TC версия 9 можно найти здесь):

    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, это более просто, но после этого требуется перезапуск сервера Windows.

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

Монитор ресурсовДиспетчер задач

  • Не беспокойтесь, если сервер не запускается, выдавая ошибку:

     Error: SQL error when doing: Connecting to MSSQL: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property 
    
  • Загрузите JTDS - 1.3.1 ( http://sourceforge.net/projects/jtds/files/jtds/1.3.1/) и установите его

  • Возьмите файл ntlmauth.dll из папки [JTDS-1.3.1 install]/x64/SSO и замените его в [Папка сервера TC]\bin

  • Сервер TC теперь должен нормально работать как 64-битный процесс Java

  • Теперь вы можете увеличить выделение памяти (поскольку это и есть весь смысл обновления) на сервере, как описано здесь: https://confluence.jetbrains.com/display/TCD8/Installing+and+Configuring+the+TeamCity+Server

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

Нет. Вы устанавливаете 64-битную JRE и обновляете соответствующий параметр, чтобы он указывал на JRE для 64-битной установки.

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

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