为可执行文件创建的 Java 应用程序增加 Apache Tomcat Windows 服务的内存大小

Increase memory size of Apache Tomcat Windows Service for a Java application created by an executable file

我们有一个遗留的 Java Web 应用程序,我们使用可执行文件将其部署到 Windows Server 2012 机器,并且需要增加其内存池大小,因为我们从内存异常。

它在 Program Files 上创建自己的文件夹,包括 tomcat bin 文件夹和一个名为 "Apache Tomcat servicename" 的 Windows 服务,它基本上是 Tomcat 版本 6 但是当我尝试通过 tomcat6w.exe 编辑其 Java 选项,它表示系统上未安装此服务。

有没有办法将应用程序使用的 tomcat 服务更改为从 http://tomcat.apache.org/

安装的 tomcat 服务

或者在创建可执行文件时编辑 service.bat(或任何其他文件?)以在那里硬编码内存池大小?

service.bat 中有一行如下所示:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256

在 service.bat 文件中增加这些参数 --JvmMs 128 --JvmMx 256--JvmMs 1024 --JvmMx 2048

您似乎没有使用 JSS 安装程序安装 Tomcat。如果您已使用 JSS 安装程序安装 Tomcat,则可以使用 tomcat6w。

此时,您需要按照以下步骤操作:

  • 运行 位于开始菜单 > 所有程序 > Apache Tomcat x > 配置下的快捷方式 Tomcat
  • 在 Java 选项卡下,对内存池进行任何调整。
  • 单击“应用”保存更改。
  • 重新启动Tomcat。

解决方案是 运行 regedit 通过注册表编辑 Tomcat RAM 使用情况,浏览至:

 HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ApacheSoftwareFoundation >
   Procrun 2.0 > apache-tomcat > Parameters > Java

并编辑以下值:

JvmMs  REG_DWORD   0x00000800 (2048)
JvmMx  REG_DWORD   0x00001000 (4096)

当 Tomcat 作为 Windows 服务并通过自定义可执行文件安装并且无法通过 tomcatxw.exe 管理器访问其配置时,以上内容适用。

试试这个

  1. 转到 windows 注册表并查找目录 HKEY_LOCAL_MACHINE\SOFTWARE\Apache 软件 Foundation\Procrun 2.0\htfty\Parameters\Java

  2. 那边可以看到参数JvmMs和JvmMx。将它们更改为所需的值并重新启动服务。

tomcat 安装的 bin 目录中应该有一个名为 catalina.bat 的文件(apache tomcat 7+ 中的 setenv.bat )。您可以将您的选项添加到 CATALINA_OPS 并在重新启动后 tomcat 它们应该被应用。要检查是否应用了 jvisualvm(它会显示为您的 jvm 设置了哪些选项)。

您的 Tomcat 将有两个 exe 文件,Tomcat6.exe 和 Tomcat6w.exe

假设您的服务名称是 'MyService',如 'Windows Services' 所示,现在将 Tomcat6w.exe 重命名为 MyServicew.exe(注意还有一个 'w'文件名)。

现在双击这个 MyServicew.exe,一个直观的 UI 会呈现给您,里面有服务参数。

祝一切顺利!