Как запустить 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 в другую. Вы сломаете вещи!