作为 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 上的服务?