注: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=""/>
---------------------------------------------------------------------------------------------------------
tomcat6 优化初步
文章分类:Java编程
1 必须要配置环境变量 才可以使用 Apache Portable Runtime 技术
http://tomcat.apache.org/download-native.cgi
如果使用的是解压方式的tomcat
则需要自己将tcnative-1.dll拷贝到 %TOMCAT_HOME%\bin 目录下
同时设置环境变量
TOMCAT_HOME C:\tomcat6.0
CATALINA_HOME C:\tomcat6.0
CATALINA_BASE C:\tomcat6.0
PATH %TOMCAT_HOME%\bin
CLASSPATH %CATALINA_HOME%\common\lib\servlet.jar
2 为了提高安全性,一般情况下屏蔽 AJP
注释或者删除server.xml中的 Connector节点
Xml代码
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
3 内存设置
Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m
Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS='-Xms256m -Xmx512m'
4 HTTP优化配置 server.xml
仔细看server.xml.其实里面都有,只是默认给注释掉了,下面是参数说明
name
这个是线程池的名字,必须唯一,后面会用到
namePrefix
线程的名字前缀,用来标记线程名字的,
maxThreads
允许的最大线程池里的线程数量,默认是200,一般设置高一些,限制并不占用资源
minSpareThreads
最小的保持活跃的线程数量,默认是25
maxIdleTime
超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟(60000毫秒)。
threadPriority
线程的等级。默认是Thread.NORM_PRIORITY
Xml代码
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="5000" minSpareThreads="500"/>
<Connector executor="tomcatThreadPool"
port="88" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
5 禁用DNS查询 enableLookups="false"
当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。
DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。
为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值
Xml代码
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="5000" minSpareThreads="500"/>
<Connector executor="tomcatThreadPool"
port="88" protocol="HTTP/1.1"
connectionTimeout="20000"
enableLookups="false"
redirectPort="8443" />
6 设置容器处理代码,解决乱码问题
Xml代码
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="5000" minSpareThreads="500"/>
<Connector executor="tomcatThreadPool"
port="88" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
redirectPort="8443" />
7 自动加载 修改conf/context.xml
Xml代码
<Context reloadable="true">
8 Tomcat配置服务器
Xml代码
<Context path="/text" docBase="f:\text\11" debug="0" reloadable="true"/>
9 自定义部署目录,在Engine节点添加
Xml代码
<Host name="www.huadepengye.com" appBase="D:\Myweb" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="D:\Myweb\HDPYWeb"/>
</Host>
--------------------------------------------------------------------------------------------------
Tomcat优化配置之二
1.jvm的server版和client版在上面的表中,我们看到有server版和client版。Jvm动态库有client和server两个版 本,分别针对桌面应用和服务器应用做了相应的优化,client版本加 载速度较快,server版本加载速度较慢但运行起来较快。
在命令行 java -version 可以看到jvm配置的是哪个版本。
如果要修改jvm的版本
%JAVA_HOME%/jre/bin/client/jvm.dll
%JAVA_HOME%/jre/bin/server/jvm.dll
可以看到这两个jvm.dll的大小不同。
更改默认java.exe调用的jvm.dll,这个由jvm.cfg决定。
编辑%JAVA_HOME%jrelibi386jvm.cfg
里面第一行写的是 -client 默认就是client版本 ,把第二行的-server KNOWN 放到第一行, 如下面所示
-server KNOWN
-client KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
然后重启tomcat,在命令行下
java -version
就可以看到类似的信息
java version "1.4.2_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05 )
Java HotSpot(TM) Server VM (build 1.4.2_07-b05 , mixed mode)
2. 如何加大tomcat连接数在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。Unix中如何设置这些参数,请参阅Unix常用监控和管理命令tomcat4中的配置示例:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="10" maxProcessors="1024"
enableLookups="false" redirectPort="8443"
acceptCount="1024" debug="0" connectionTimeout="30000" />对于其他端口的侦听配置,以此类推。3. tomcat中如何禁止列目录下的文件
在{tomcat_home}/conf/web.xml中,把listings参数设置成false即可,如下:
<servlet>
...
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
...
</servlet>
转自:http://blog.163.com/sxr_y/blog/static/178992137201102701243218/