java - 如何在 64 位 JVM 上运行 TeamCity

标签 java windows jvm teamcity-7.1

出于某种原因,我刚刚发现 TeamCity 在 Windows 的 32 位 JVM 上运行。

我在检查大型(不是那么大)Git 存储库时看到记录了内存错误,并且我已经达到了 JVM 的最大堆大小。我对 Java、JVM 或 TomCat 一无所知。

如何在现代 64 位 JVM 上运行 TeamCity?我感觉到它会很痛苦,否则它将是默认设置。

我们是一个小团队,如果某些东西没有苹果级别的“它能正常工作”,我们就会跳过它。

我们可以接受这个不在 CI 服务器上的项目,但最好能知道其中涉及的内容并权衡投资。

感谢任何建议。

编辑

好吧,马库斯指出了这个片段(我读过),但我看不到任何解释该做什么的信息。

Using 64 bit Java to Run TeamCity Server TeamCity can run under both 32 and 64 bit JVM. It is recommended to use 32 bit JVM unless you need to dedicate more than 1.3Gb of memory to the TeamCity process.

If you choose to use x64 JVM please note that the memory usage is almost doubled when switching from 32 to 64 bit JVM, so please make sure you specify at least twice as much memory as for 32 bit JVM, see Setting Up Memory settings for TeamCity Server.

If you run TeamCity as a service and switch to x64 bit, you will also need to use x64 Tomcat executables, see more.

我错过了什么吗?

编辑 2

啊,好吧,埋在上面那个链接的某些段落是这样的:

"if you run as Windows service and want to upgrade JRE to 64 bit version, you will need to replace \jre with appropriate JRE"

所以我想我需要将一些文件复制到/jre 文件夹中?

最佳答案

我的工作方式(TeamCity 8、Windows server 2008 r2):

  • 在目标机器上安装64位的JRE,现在有两种方法可以做到这一点

  • A -> 如果您使用的是 Teamcity 捆绑的 JRE,请将 JRE 文件夹([TC 服务器文件夹]\JRE)替换为新安装的 JRE x64 中的 JRE 文件夹 - 您必须关闭 TC 服务器服务(以及可能也使用此 JRE 的所有 java.exe*32 服务)

  • B -> 更改 TeamCity 内部属性,指向新安装的 JRE x64(see documentation for TC version 8TC 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,它更简单,但之后需要重新启动 Windows 服务器

  • 如果您现在运行 TC 服务器服务,它应该作为 64 位 Java 进程运行(通过任务管理器中的 PID 检查):

Resource  Monitor Task Manager

关于java - 如何在 64 位 JVM 上运行 TeamCity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19865469/

相关文章:

java - 我如何获取在另一个类的方法中获取值的数组

java - 为 Android 实现可下载代码和内容插件

c - 如何在 Windows 上递归遍历 C 中的目录

java - 线程优先级算法的正确性

java - 除了 javac 或 Microsoft 的 .Net 编译器之外,还有哪些可用于 JVM 或 CLR 的编译器?

java - 如何使用Httpclient 4.x发送邮件

Windows 无法识别 PHP

Windows 中的 Python 环境变量?

java - 如何在 JVM 级别捕获 OutOfMemory 错误?

java - Spring CrudRepository - 在集合中查找忽略大小写