Java 如何在不使用配置程序的情况下优化Tomcat 5.5 JVM内存设置

Java 如何在不使用配置程序的情况下优化Tomcat 5.5 JVM内存设置,java,tomcat,memory,jvm,Java,Tomcat,Memory,Jvm,我需要将Tomcat内存设置配置为更大安装的一部分,因此在不可能的情况下使用配置应用程序手动配置Tomcat。我想我可以直接将JVM内存设置扔到JAVA_OPTS环境变量中,但我正在用jconsole测试它是否有效,它。。。没有 根据下面的评论,CATALINA_OPTS也不起作用。到目前为止,我能让它工作的唯一方法是通过Tomcat配置GUI,而这对于我的问题来说不是一个可接受的解决方案。使用CATALINA\u OPTS环境变量。不确定它是否适用于您。但监控tomcat内存设置以及连接数等的

我需要将Tomcat内存设置配置为更大安装的一部分,因此在不可能的情况下使用配置应用程序手动配置Tomcat。我想我可以直接将JVM内存设置扔到JAVA_OPTS环境变量中,但我正在用jconsole测试它是否有效,它。。。没有


根据下面的评论,CATALINA_OPTS也不起作用。到目前为止,我能让它工作的唯一方法是通过Tomcat配置GUI,而这对于我的问题来说不是一个可接受的解决方案。

使用
CATALINA\u OPTS
环境变量。

不确定它是否适用于您。但监控tomcat内存设置以及连接数等的唯一方法实际上对我们有效


它显示了Tomcat tunning所需的大部分信息。我们使用Tomcat 5.5和6.0对其进行了测试,尽管测试版状态和上次更新日期都在2006年底,但它仍然运行良好。

如果您手动启动Tomcat(而不是作为服务),那么CATALINA_OPTS环境变量就是一个不错的选择。如果您将其作为服务启动,那么设置可能存储在注册表中的某个位置。我的机器上安装了Tomcat 6,我在
HKLM\SOFTWARE\Apache SOFTWARE Foundation\Procrun 2.0\Tomcat6\Parameters\Java
键上找到了设置。

只需添加到前面的注释中,用于更新Tomcat服务设置(如果Tomcat在Windows上作为服务运行)的命令行工具的文档如下所示。此工具使用正确的设置更新注册表。 因此,如果您想更新Tomcat服务的最大内存设置,您可以(从Tomcat/bin目录)运行它,假设默认服务名称为Tomcat5:

tomcat5 //US//Tomcat5 --JvmMx=512
在tomcat/bin目录中创建一个setenv.(sh|bat)文件,其中包含要修改的环境变量

catalina脚本检查setenv脚本是否存在,并运行它来设置环境变量。通过这种方式,您可以将参数仅更改为tomcat的一个实例,并且更容易将其复制到另一个实例


可能您的配置应用程序已经创建了setenv脚本,这就是tomcat忽略环境变量的原因。

Serhii的建议有效,下面是一些更详细的信息

如果查看安装的bin目录,您将看到catalina.sh 或者.bat脚本。如果你看看这些,你会发现它们运行的是 setenv.sh或setenv.bat脚本(如果存在)分别用于设置环境变量。 相关的环境变量在 catalina的顶部。sh/bat。要使用它们,请创建一个文件 $CATALINA_HOME/bin/setenv.sh及目录

export JAVA_OPTS="-server -Xmx512m"
对于Windows,您需要在setenv.bat中

set JAVA_OPTS=-server -Xmx768m
希望这有帮助,
Glenn

我使用以下
setenv.bat
内容:

==============setenv.bat============

    set JAVA_OPTS=-XX:MaxPermSize=256m -Xms256M -Xmx768M -Xdebug -Xnoagent  -Xrunjdwp:transport=dt_socket,address=7777,server=y,suspend=n %JAVA_OPTS%

====================================

它还支持调试,并将调试端口设置为7777,并附加了以前的
JAVA_OPTS

Handy for linux虚拟机的内容;将75%的系统内存用于Tomcat。哎呀

放在“{tomcat}/bin/startup.sh”的开头


我喜欢基于可用服务器内存设置tomcat6内存的想法(这很酷,因为在硬件升级后我不必更改设置)。这是我的(稍微扩展的内存设置):

export CATALINA|u OPTS=“-Xmx
`cat/proc/meminfo | grep MemTotal | awk”{
打印$2*0.75}`
k-Xms
`cat/proc/meminfo | grep MemTotal | awk'{
打印$2*0.75}`
k-XX:NewSize=
`cat/proc/meminfo | grep MemTotal|
awk'{print$2*0.15}`
k-XX:MaxNewSize=
`cat/proc/meminfo|grep
MemTotal | awk{print$2*0.15}`
k-XX:PermSize=
`cat/proc/meminfo
|grep MemTotal | awk{print$2*0.15}`
k-XX:MaxPermSize=
`cat
/proc/meminfo | grep MemTotal | awk{print$2*0.15}`
k“


把它放到:“{tomcat}/bin/startup.sh”(例如,Ubuntu 10.10的“/usr/share/tomcat6/bin”)

如果你使用Ubuntu 11.10和apache-tomcat6(从apt get安装),你可以把这个配置放到/usr/share/tomcat6/bin/catalina.sh

# -----------------------------------------------------------------------------

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m \
-Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m \
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"

之后,您可以通过ps-ef | grep tomcat:)检查配置。

只需编辑您的catalina/bin/startup.sh脚本。在其中添加以下命令:

#Adjust it to the size you want. Ignore the from bit.
export CATALINA_OPTS="-Xmx1024m"
#This should point to your catalina base directory 
export CATALINA_BASE=/usr/local/tomcat
#This is only used if you editing the instance of your tomcat
/usr/share/tomcat6/bin/startup.sh

Sailab:

如果在Windows上运行Tomcat,可以使用Tomcat附带的整洁的“Tomcat监视器”应用程序

转到Java选项卡。在底部的“Java选项”文本区域下方,您将找到3个输入字段:

  • 初始内存池\uuuuuuuMB
  • 最大内存池\uuuuuuuMB
  • 线程堆栈大小\uuuuuuuuuKB

在我的例子中,有一个/etc/sysconfig/tomcat5.conf文件覆盖了/etc/tomcat5/tomcat5.conf中的所有设置。我很确定这只适用于Tomcat4.0和更早版本。我可以保证它适用于5.0.28。检查startup.bat/sh和catalina.bat/sh以检查正在使用的内容。也许您传递的参数格式不正确?这个解决方案,加上Glenn的解决方案,对我来说效果很好。“其他”指南忽略了输入“export”命令,tomcat无法启动。我本应该弄明白这一点,因为它毕竟是一个.sh文件…但感谢您为一个昏昏欲睡的程序员如此巧妙地解释了它…出于某种原因,tomcat6的RPM包(例如CentOS)有一个init.d,它不使用catalina.sh(调用setnev.sh的那一个)换句话说,在CentOS/etc/tomcat6/tomcat6.conf上,我更改了这个并保存了。但是当我再次尝试启动它时,tomcat没有启动。一旦我更改回默认内存大小,我就可以再次启动tomcat了。你能建议怎么做吗?@Ankita我不再和Tomcat一起工作了。。。太复杂了。我转换
#Adjust it to the size you want. Ignore the from bit.
export CATALINA_OPTS="-Xmx1024m"
#This should point to your catalina base directory 
export CATALINA_BASE=/usr/local/tomcat
#This is only used if you editing the instance of your tomcat
/usr/share/tomcat6/bin/startup.sh