Tomcat中的重要配置
由于不是从事WEB开发,所以一直以来对Tomcat都没有深入研究,只了解如何修改端口、部署应用等简单操作。最近公司服务器发生了一些异常现象,需要分析Tomcat的连接日志,故借此深入了解Tomcat的重要配置。
注:Tomcat版本为5.5.20
1、JVM堆栈调整
众所周知,普通Java应用,配置启动参数 -Xms -Xmx即可。Tomcat中大同小异,修改%TOMCAT_HOME%\bin目录下的catalina.bat脚本中的JAVA_OPTS变量。
JAVA_OPTS中的初始配置如下:
set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.log
如果需要配置-Xms256m -Xmx768m(初始化内存大小为256m,可以使用的最大内存为768m),则配置如下:
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx768m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
2、Http Connector
在Apache Tomcat的Doc中,对该项配置作了详细的说明。默认配置如下:
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
- port:Tomcat服务器监听的端口号
- maxHttpHeaderSize:Http的Header的最大限制
- maxThreads:Tomcat可创建的最大的线程数
- minSpareThreads:初始化创建的线程数
- maxSpareThreads:一旦创建的线程超过这个数,Tomcat就将关闭不再需要的Socket线程
- enableLookups:使用允许DNS查询,通常情况下设置为false
- acceptCount:当所有可以使用的处理请求的线程树都被使用时,可以放到请求队列中的请求数,超过这个数的请求将不予处理。其实,该属性与ServerSocket(int port,int backlog)中的backlog参数意义相同,具体可参考ServerSocket的JDK API
- connectionTimeout:网络连接超时,单位毫秒。设置为0表示永不超时
除此之外,还有很多有用的属性,例如:maxPostSize,maxSavePostSize,maxKeepAliveRequests等,具体用法可以参考Tomcat的Doc
3、Access Log Valve设置
该Valve用于记录每次Tomcat服务器的连接,默认情况下该选项是关闭的。同时,该日志可用于其它分析工具进行日志分析和统计。配置如下:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
- directory:该日志存放的目录
- prefix:该日志文件的名称
- suffix:该日志文件的后缀名
- pattern:日志显示的格式,通常情况下用common或combined。具体格式相关字段的意义可以参考Tomcat Doc
4、Remote Address Filter
IP过滤功能,对于服务器的安全配置非常有用。可以用于过滤来自请求的主机或IP,并允许拒绝那些主机或IP。
配置如下:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow=" 127.0.0.1" deny=""/>