我们有一个在 Ubuntu 10.04LTS 上运行的 Tomcat6 实例。我们的测试机只是一台运行 Tomcat6 的 Windows 机器。两台机器(Linux 和 Windows)都有 1GB 的内存。
通过 Windows 中的 Tomcat 配置工具,我能够设置 JVM 的最小/最大/永久代大小。它们分别设置为 256/512/128。现在在 Ubuntu 机器上,我尝试在几个不同的地方设置 JVM 选项,包括:
在 /etc/environment 中添加 JAVA_OPTS 和 CATALINA_OPTS 在 $CATALINA_HOME/bin/catalina.sh 中添加 JAVA_OPTS 创建 setenv.sh 并在 $CATALINA_HOME/bin 中添加 JAVA_OPTS 将 JAVA_OPTS 直接添加到 /etc/init.d/tomcat6 取消注释 JAVA_OPTS 并在 /etc/default/tomcat6 中修改它
几乎所有这些方法都不起作用,除了直接修改 /etc/init.d/tomcat6(可能还有 /etc/default/tomcat6 更改,但我就是这么做的)。但是,我的理解是,当您更改这些设置时,整个 tomcat6 实例只应使用一个 JVM,并且该内存在应用程序之间共享。
在我们的 Windows 机器上,tomcat6 作为服务运行,并且似乎以这种方式运行。但是,当我在 Linux 机器上查看 htop 时,有 20 多个 tomcat6 实例(我有一个应用程序使用 chron 每 X 秒触发一次内部作业,所以这些可能是线程?或者它们是实际实例)都具有这些内存设置。该应用程序运行良好,但最终锁定。我猜这些应用程序中的每一个都认为它有 512m 可用,并且永远不会有 GC,然后完全锁定了 tomcat。
设置这一切的正确方法是什么?
答案1
您必须在 CATALINA_HOME/bin/setenv.sh 文件中设置 JAVA_OPS
一旦它们进入那里,你应该在执行时看到设置/etc/init.d/tomcat6 启动