42

我需要将 Tomcat 内存设置配置为大型安装的一部分,因此事后使用配置应用程序手动配置 Tomcat 是不可能的。我以为我可以将 JVM 内存设置放入 JAVA_OPTS 环境变量中,但我正在使用 jconsole 对其进行测试,以查看它是否有效,但它……没有。

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

4

13 回答 13

71

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

希望这会有所帮助,格伦

于 2008-12-03T17:34:48.410 回答
24

在 tomcat/bin 目录中创建一个 setenv.(sh|bat) 文件,其中包含您要修改的环境变量。

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

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

于 2008-11-28T09:11:07.880 回答
5

使用CATALINA_OPTS环境变量。

于 2008-11-13T01:20:05.567 回答
5

如果您使用 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 :)

于 2011-11-21T03:46:36.337 回答
3

我使用以下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.

于 2010-09-06T15:20:40.777 回答
3

方便用于 linux 虚拟机;将 75% 的总系统内存用于 Tomcat。耶 AWK。

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

export CATALINA_OPTS="-Xmx`cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.75 } '`k"
于 2010-10-19T00:43:18.240 回答
2

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

tomcat5 //US//Tomcat5 --JvmMx=512
于 2008-11-18T18:00:43.040 回答
2

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

出口 CATALINA_OPTS="-Xmx `cat /proc/meminfo | grep MemTotal | awk '{ print $2*0.75 } '`k -Xms `cat /proc/meminfo | grep MemTotal | awk '{ print $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”)

于 2011-11-13T13:32:44.033 回答
1

不确定它是否适合您。但是,真正对我们有用的监控 tomcat 内存设置以及连接数等的唯一方法是Lambda Probe

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

于 2008-11-13T06:53:24.427 回答
1

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

于 2008-11-13T07:15:24.163 回答
1

如果您在 Windows 上运行 Tomcat,您可以使用 Tomcat 附带的简洁的“Tomcat Monitor”应用程序。

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

  • 初始内存池_ __ MB
  • 最大内存池_ __ MB
  • 线程堆栈大小_ ____ KB
于 2012-06-20T13:47:09.647 回答
0

只需编辑您的 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: http: //www.facejar.com/member/page-id-477.html

于 2012-04-30T22:58:38.037 回答
0

就我而言,有一个 /etc/sysconfig/tomcat5.conf 文件覆盖了 /etc/tomcat5/tomcat5.conf 中的所有设置

于 2016-03-22T18:45:34.337 回答