Tomcat 相关配置与优化配置

来源:互联网 发布:老子传奇知乎 编辑:程序博客网 时间:2024/06/05 16:21

1.   相关端口、编码、NIOConnector配置

编辑tomcat下的Server.xml 文件,原内容如下

 <Connector port="8080"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

1)        http访问端口修改,假设我们目前需要的端口为80: 8080------》80

<Connectorport="80"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

2)        NIOConnector 连接配置,采用NIO连接器是为了使用NIO的多路复用功能,提高tomcat的吞吐与并发能力。

<Connectorport="80" protocol="org.apache.coyote.http11.Http11NioProtocol"  connectionTimeout="20000"  redirectPort="8443" />

 

3)        Tomcat 编码设置

<Connectorport="80" protocol="org.apache.coyote.http11.Http11NioProtocol"  connectionTimeout="20000"  redirectPort="8443"URIEncoding=”utf-8” />

 

2.   虚拟路径配置,虚拟路径的作用是:如果要求我们的软件能够直接通过IP以及端口就能访问,则需要此配置。

编辑Server.xml 在<Host>标签下添加如下内容

<Context path=" " docBase="D:\myproject\webapp" reloadable="true" debug="0"  crossContext="true" ></Context>

path:指定访问该 Web 应用的 URL 入口。

docBase:指定 Web 应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase 属性的相对路径,如果 Web 应用采用开放目录结构,则指定 Web应用的根目录,如果 Web 应用是个 war 文件,则指定 war 文件的路径。(指定项目所在地址)

reloadable:如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classes 和 WEB-INF/lib 目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。

crossContext:如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。

Debug:与这个 Engine 关联的 Logger 记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为 0。

这个方法一般在设置后都需要重启服务器才有效(有时候即使设置了reloadable=“true” 也需要重新启动)

3.   Jvm参数相关配置

     在Catalina.sh 文件中添加如下参数,红色字体代表为需要动态调整的参     数,配置以64为JDK为例。

JAVA_OPTS="-XX:+UseCMSCompactAtFullCollection  -Xms3536m -Xmx3536m  -Xmn2g -XX:TargetSurvivorRatio=90 -XX:PermSize=512m

-XX:MaxPermSize=512m  -Xverify:none -XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError 

XX:HeapDumpPath=/gc/dump/ heap.hprof-XX:+DisableExplicitGC

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps

-XX:MaxTenuringThreshold=25  -Xloggc:/gc/gc.log"

-Xms3536m最小堆内存大小,建议大约占整个内存的70%左右

-Xmx3536m最大堆内存大小,建议大约占整个内存的70%左右,建议与最小堆内存一直,尽量防止发生不必要的内存回收。

-Xmn2g  新生代内存大小,建议为整个堆内存的80%左右

-XX:PermSize=512m 最小永久代的大小,这个要根据项目的规模来,如果项目规模大,可以做出与之适应的调整,通过JConsole工具监测项目所需要的永久带大小。

 -XX:MaxPermSize=512m最大永久代的大小,这个要根据项目的规模来,如果项目规模大,可以做出与之适应的调整,通过JConsole工具监测项目所需要的永久带大小。

-XX:HeapDumpPath=/gc/dump/heap.hprof   当出现内存溢出时,打印出来的堆信息。

  -Xloggc:/gc/gc.log 垃圾回收的日志所在的路径,通过此文件便于排查系统隐藏、性能问题。

4.   线程池配置

目的:配置合理的线程数,增加系统的吞吐量以及并发能力,防止线程数太多造成服务器压力太大,合理利用服务器硬件资源。

编辑Server.xml

1)        增加线程池Executor配置

<Executorname="tomcatThreadPool"namePrefix="catalina-exec-"maxThreads="200 "  minSpareThreads="4"maxSpareThreads="200" acceptCount="200"    maxIdleTime="30000"  enableLookups="false"/>

maxThreads:最大能接受的请求数,默认为200

minSpareThreads:最少备用线程数,默认初始化,默认为25 maxSpareThreads:最多备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程

acceptCount:等待处理的请求队列,默认为100,超过队列长度,服务器则拒绝客户端请求,直接返回403

maxIdleTime:如果一个线程在30秒以内没有活跃,则终止运行并从线程池中移除。除非线程池数量小于或等于minSpareThreads数量。默认值是1分钟

enableLookups:如果为true,调用request.getRemoteHost会执行DNS反查,反向解析IP对应的域名或主机,效率较低,建议设为false。

2)修改httpConnector 相关配置

 <Connectorport="80"  executor="tomcatThreadPool"protocol="org.apache.coyote.http11.Http11NioProtocol"  connectionTimeout="20000"  redirectPort="8443" URIEncoding=”utf-8”  />

原创粉丝点击