作为 Windows 服务运行时,如何增加 Tomcat 7 的内存?

Posted

技术标签:

【中文标题】作为 Windows 服务运行时,如何增加 Tomcat 7 的内存?【英文标题】:How do I increase memory on Tomcat 7 when running as a Windows Service? 【发布时间】:2011-08-24 11:32:42 【问题描述】:

我正在尝试将 Tomcat 7 作为 Windows 服务(XP 和 Windows 7)运行。

我看到在 catalina.bat 中设置 -Xmx 和 -Xms jvm 参数的位置,但我不确定在使用 $CATALINA_HOME/bin/service.bat 安装服务名称时如何设置。我环顾四周,但我能找到的最好的结果是我需要更新 Windows 注册表项,但我不确定要编辑哪个。

我希望有更简单的方法,是吗?

更新:我没有使用 Windows 安装程序,主要是因为我在同一台机器上运行多个 tomcat 实例,但端口不同(出于我不想在这里讨论的原因)。如果我可以将安装程序与使用不同端口的多个实例一起使用,那么我想知道如何,但无论如何,是否可以在没有安装程序附带的 UI 工具的情况下增加 tomcat Windows 服务的内存?

【问题讨论】:

【参考方案1】:

假设您已经从Tomcat homepage 下载并安装了 Tomcat 作为 Windows Service Installer exe 文件,然后检查系统托盘中的 Apache 羽毛图标(或者如果没有,请运行 Monitor Tomcat 从开始菜单)。双击羽毛图标并转到 Java 选项卡。在那里你可以配置内存。

重新启动服务以使更改生效。

【讨论】:

Hai @BalusC, 1. 我想添加-XX:MaxPermSize。如果我像你说的那样喜欢上面的内容,就足够了吗?还有 2. 我想将 -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 添加到 catalina 批处理脚本中。我怎样才能?请指导我... @vissu:如果您有新问题,请按右上角的 按钮。 我更改了这个并保存。但是当我尝试再次启动它时,tomcat 没有启动。一旦我改回默认内存大小,我就可以再次启动 tomcat。 或者你可以直接运行 .\bin\tomcat7w.exe ,即使你没有使用安装包。 运行%CATALINA_HOME%\bin\tomcatXw.exe可以打开相同的对话框,其中X是主要版本号。另见tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html【参考方案2】:

我认为,我自己的问题的答案是使用 tomcat7.exe:

cd $CATALINA_HOME
.\bin\service.bat install tomcat
.\bin\tomcat7.exe //US//tomcat7 --JvmMs=512 --JvmMx=1024 --JvmSs=1024

此外,您可以在没有系统托盘的情况下启动 BalusC 提到的 UI 工具或使用带有 tomcat7w.exe 的安装程序

.\bin\tomcat7w.exe //ES//tomcat

对此的补充说明:

设置 --JvmXX 参数(通过 UI 工具或命令行)可能还不够。您可能还需要明确指定 JVM 内存值。从命令行可能看起来像这样:

bin\tomcat7w.exe //US//tomcat7 --JavaOptions=-Xmx=1024;-Xms=512;..

注意不要覆盖其他 JavaOption 值。您可以尝试更新 bin\service.bat 或使用 UI 工具并附加 java 选项(用新行分隔每个值)。

【讨论】:

您可以在这里找到更多这些选项directory.utk.edu/docs/windows-service-howto.html 此外,如果命令行选项中有特殊字符(例如,当您设置 javaagent 的路径时),您可能需要引用它们。更多需要注意的是,您可以使用 ++JvmOptions=... 将其附加到列表中,而不是 -- 删除其他所有内容。 ++JvmOptions 在大多数情况下更安全且足够,请小心使用 --JvmOptions 一个【参考方案3】:

//ES/tomcat -> 如果您在安装过程中更改了服务名称,这可能不起作用。

在没有任何服务名称的情况下运行命令

.\bin\tomcat7w.exe //ES

或使用确切的服务名称

.\bin\tomcat7w.exe //ES/YourServiceName

【讨论】:

【参考方案4】:

根据 catalina.sh 自定义应始终进入您自己的 setenv.sh(或分别为 setenv.bat),例如:

CATALINA_OPTS='-Xms512m -Xmx1024m'

我的猜测是启动服务时也会调用 setenv.bat。不过我可能是错的,因为我不是 Windows 用户。

【讨论】:

没有。 Setenv.bat 在作为服务运行时不会被调用。 downvote:setenv 作为 Windows 服务运行时不会被调用。【参考方案5】:

如果您正在运行自定义命名服务,您应该会在 Tomcat/bin 目录中看到两个可执行文件 就我而言,Tomcat 8

08/14/2019  10:24 PM           116,648 Tomcat-Custom.exe
08/14/2019  10:24 PM           119,720 Tomcat-Customw.exe
               2 File(s)        236,368 bytes

运行“w”终止的可执行文件将允许您在 Java 选项卡中配置 Xmx

【讨论】:

这个屏幕很有帮助,但我需要使用@bkumar 的命令来打开它。完整的命令是tomcat7w.exe //ES/MyServiceNameOnTaskManager @MKYung 您也可以通过进入已安装/解压的 tomcat 文件夹的 bin 文件夹并执行 tomcat7w.exe(示例路径:C:\tomcat\bin\tomcat7w. exe)【参考方案6】:

为Tomcat 7增加内存:

确定您的服务名称,您将在服务属性中的“可执行文件路径”下找到它

对我来说是 //RS//Tomcat70 所以名字是 Tomcat70

然后以管理员身份写:

tomcat7.exe //US//Tomcat70 --JvmOptions=-Xmx1024M

【讨论】:

以上是关于作为 Windows 服务运行时,如何增加 Tomcat 7 的内存?的主要内容,如果未能解决你的问题,请参考以下文章

如何在调试模式下运行 wildfly,作为 Windows 上的服务?

如何在 ajax 客户端中使用作为 Windows 服务运行的 wcf 服务

作为服务运行时,Windows 不接受套接字连接

如何通知Windows该服务已启动?

如何将 MongoDB 作为 Windows 服务运行?

如何以与 Windows 服务不同的用户身份运行进程