Tomcat 配置相关说明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| /usr/local/tomcat 主目录(安装目录)
bin:存放windows或linux平台上启动或关闭的Tomcat的脚本文件
conf:存放Tomcat的各种全局配置文件,其中最主要的是server.xml和web.xml
lib:存放Tomcat运行需要的库文件(JARS)
logs:存放Tomcat执行时的LOG文件
webapps:Tomcat的主要Web发布目录(包括应用程序事例)htdocs(html php)
work:存放jsp编译后产生的class文件
ls /usr/local/tomcat/conf/
catalina.policy:权限控制配置文件
catalina.properties:Tomcat属性配置文件
context.xml:上下文配置文件(selinux)
logging.properties:日志log相关配置文件
server.xml:主配置文件
tomcat-users.xml:manager-gui管理用户配置文件(Tomcat安装后生成的管理界面,该文件可开启访问)
web.xml:Tomcat的servlet,servlet-mapping,filter,MIME等相关配置
server.xml 主要配置文件,可修改启动端口,设置网站根目录,虚拟主机,开启https等功能。
|
JVM内存优化
默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况
- 修改内存等 JVM相关配置
Linux下修改TOMCAT_HOME/bin/catalina.sh,在其中加入,可以放在CLASSPATH=下面:
1
| JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m -XX:+UseParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection"
|
- server参数:表示以服务模式启动,启动速度会稍微慢一点,但性能会高很多。不加这个参数,默认是以客户端模式启动
- Xms:Java虚拟机初始化时堆的最小内存,一般与 Xmx配置为相同值,这样的好处是GC不必再为扩展内存空间而消耗性能
- Xmx:Java虚拟机可使用堆的最大内存,一般建议堆的最大值设置为可用内存的最大值的80%
- XX:PermSize:Java虚拟机永久代大小
- XX:MaxPermSize:Java虚拟机永久代大小最大值
- -XX:+UseParallelGCThreads:并行收集器线程数,同时有多少个线程进行垃圾回收,一般与CPU数量相等
- -XX:+UseConcMarkSweepGC:CMS收集器(并发收集器)
- -XX:+UseCMSCompactAtFullCollection:开启内存空间压缩和整理,防止过多内存碎片
Tomcat 本身优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
maxConnections="3000"
maxThreads="400"
minSpareThreads="200"
redirectPort="8443"
enableLookups="false"
acceptCount="100"
maxPostSize="10485760"
compression="on"
disableUploadTimeout="true"
compressionMinSize="2048"
acceptorThreadCount="8"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
URIEncoding="utf-8" />
|
- connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为20000毫秒
- maxConnections:当Tomcat接收的连接数达到maxConnections时,Acceptor线程不会读取accept队列中的连接;这时accept队列中的线程会一直阻塞着,直到Tomcat接收的连接数小于maxConnections
- maxThreads:Tomcat线程池最多能起的线程数
- minSpareThreads:Tomcat初始化的线程池大小或者说Tomcat线程池最少会有这么多线程
- enableLookups:是否允许DNS查询反查域名,为了提高处理能力,应设置为false
- acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,就是被排队的请求数,超过这个数的请求将拒绝连接。
- maxPostSize:对post请求参数大小做出限制
- compression:打开压缩功能
- disableUploadTimeout:对POST请求发送数据超时使用其他参数来设置,这样在发送数据的过程中最大可以等待的时间间隔就不再由connectionTimeout决定,而是由connectionUploadTimeout决定
- compressionMinSize:启用压缩的输出内容大小,默认为2KB
- acceptorThreadCount:接收Socket连接的线程数。默认值是1,这个值不需要太大,最大值与CPU核心数一样就行了,没有必要太大
- compressableMimeType:压缩的类型
其他优化
1.禁用tomcat的AJP协议
1
2
3
| 注释:
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
|
2.修改通讯模式BIO修改为NIO提高并发处理能力
1
2
3
| #去掉注释
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
|