Tomcat 将会如何运行在某种程度上要依赖于你是如何配置运行Tomcat的那个JVM的。例如,如果你没有把JVM 配置成能够使用指定数量的堆内存,它就会使用默认量的内存,而这默认的内存可能对于你将要运行的 web 应用来说是不够的。如果 Tomcat 在启动时没有足够的内存运行你的webapp,对于所有的 web 客户端,它就会发送错误页面给它们。如果Tomcat有足够的内存启动你的webapp,但还不够处理connecter允许进入Tomcat 的并发请求数,则一些或所有的请求将收到一个错误响应或 a dropped connection。
有太多的你可能要设置的JVM启动开关设置。下面是选取的一些最有用的 JVM 启动开关设置。
关于 heap 的设置无疑是最重要的配置,所以你要理解并正确设置。内存设置过度受限,则 Tomcat 将会要么运行得很慢或抛出 OutOfMemoryError 而失败并表现得不稳定。而如果内存设置过大,JVM要么是不会启动,因为它不能分配如此大的内存,要么是启动了也运行Okay的,但是会用掉比它需要的内存更多的内存,计算机上的其他软件就不能运行了。
如果给Tomcat JVM 配了一个小的启动堆内存和一个大的最大堆内存,在Java VM将堆内存提升到最大堆内存这段期间,页面响应时间就受到了影响,因为在Tomcat尝试响应请求时又要花时间去reallocate内存块。 如果你不想性能受到这个问题的影响,就要确保你的 -Xms 和 -Xmx 的值是一样的值,这样在操作过程中,JVM就无需重新调整堆内存的大小。
可以设置 JAVA_OPTS 环境变量来设置上面提到的JVM启动开关,然后再调用 $CATALINA_HOME/bin下的脚本。
如果你想让 Tomcat JVM 以 debug 模式启动,这样你就可以附加一个远程debugger,那就要这么设置:
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
That should allow you to connect a JPDA remote debugger client to port 8000 on your Tomcat host and debug any code that runs in the Tomcat JVM。
如果你的操作系统不包含图形化显示软件(例如,如果你有 Linux、Solaris,或FreeBSD,但没有安装 X window system binaries),你就应当设置 -Djava.awt.headless=true,这样,any software you include in your webapps that might try to initialize any graphical code in the Tomcat JVM will not cause an exception。