在catalina.sh中设置的JAVA_OPTS不适用于TOMCAT私有实例

时间:2014-07-13 14:42:46

标签: java tomcat ubuntu catalina java-opts

我已经通过catalina中的catalina.sh中的JAVA_OPTS放置了JVM选项。但是,系统不会选择这些选项 - 我试图通过分析信息来设置项目属性和日志文件的路径。我必须在私有实例的bin中设置setenv.sh中的选项。甚至我在catalina.sh中查看JAVA_OPTS的echo命令也没有得到打印 - 默认值如CATALINA_BASE等。打印出来。 catalina.sh甚至被处理了吗?

在一天结束时,我的系统可以正常使用setenv.sh。我很好奇为什么没有从catalina.sh中获取JAVA_OPTS。

我正在使用安装了TOMCAT 7的Ubuntu 12.04和JDK 1.7。

由于

3 个答案:

答案 0 :(得分:6)

您不应该编辑catalina.sh文件 - 它在该文件中声明。相反,要设置您的 env 讽刺变量,请在catalina.sh所在的同一目录中创建 setenv.sh 文件(称为CATALINA_BASE / bin)并在其中编写代码。

我必须自己设置JAVA_OPTS变量,然后创建了bin/setenv.sh文件,将其设置为可执行文件chmod +x bin/setenv.sh并在其中写入:

JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512m -server"

将我的初始分配内存设置为128,将最大内存设置为512 MB。它正在发挥作用。

答案 1 :(得分:2)

请修改:/etc/default/tomcat7/etc/default/{user_who_runs_tomcat}

e.g:

*JAVA_OPTS="-Djava.awt.headless=true -Xmx2G -XX:+UseConcMarkSweepGC -server -XX:MaxPermSize=384m"*

答案 2 :(得分:1)

catalina.sh有很多条件 - 我不止一次地编辑错误的位置,或者后来在该文件中被覆盖的位置。 setenv.sh工作正常,这正是它的用途:想象一下,你正在安装一个tomcat更新 - 这会覆盖你的catalina.sh。但是,tomcat永远不会附带setenv.sh,因此它不会覆盖您的更改。

此外,您可能希望定义CATALINA_OPTS而不是JAVA_OPTS:这些是用于启动tomcat的选项。如果您的部分配置为JAVA_OPTS="-Xmx16G -Xms16G",则在尝试关闭tomcat时会分配16G堆空间:关闭过程也会生成带有JAVA_OPTS参数的JVM。只有启动过程产生CATALINA_OPTS环境(除JAVA_OPTS之外),因此这很可能是您想要配置/调优的,否则您可能因为内存要求荒谬而无法停止tomcat shutdown.sh。