我已经通过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。
由于
答案 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。