Tomcat8及以上版本性能优化(tomcat性能如何)
一、Tomcat优化
1、增大tomcat缓存
在conf\content.xml增加以下配置:
<!--自定义配置-->
<!--缓存配置,单位KB-->
<Resources cachingAllowed="true" cacheMaxSize="1024000"></Resources>
2、server.xml配置项
<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1000"
minSpareThreads="100"
maxSpareThreads="200"
acceptCount="900"
disableUploadTimeout="true"
connectionTimeout="20000"
URIEncoding="UTF-8"
enableLookups="false"
redirectPort="8443"
compression="on"
compressionMinSize="1024"
compressableMimeType="text/html,text/xml,text/css,text/javascript"/>
参数说明: org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。 minSpareThreads:最小空闲线程数。 maxSpareThreads:最大空闲线程数,如果超过这个值,会关闭无用的线程。 acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。 disableUploadTimeout:禁用上传超时时间 connectionTimeout:连接超时,单位毫秒,0代表不限制 URIEncoding:URI地址编码使用UTF-8 enableLookups:关闭dns解析,提高响应时间 compression:启用压缩功能 compressionMinSize:最小压缩大小,单位Byte compressableMimeType:压缩的文件类型
Tomcat有三种工作模式:Bio、Nio和Apr
下面简单了解下他们工作原理:
Bio(BlockingI/O):默认工作模式,阻塞式I/O操作,没有任何优化技术处理,性能比较低。 Nio(New I/O orNon-Blocking):非阻塞式I/O操作,有Bio有更好的并发处理性能。 Apr(ApachePortable Runtime,Apache可移植运行库):首选工作模式,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。 tomcat利用基于Apr库tomcat-native来实现操作系统级别控制,提供一种优化技术和非阻塞式I/O操作,大大提高并发处理能力。但是需要安装apr和tomcat-native库。
3、内存优化配置
windows平台:
# 在catalina.bat文件,在“@echo off”下面添加 :
set JAVA_OPTS=-server -Xms512m -Xmx1024m
linux平台:
# 在catalina.sh文件,在第2行下面添加 :
JAVA_OPTS='-server -Xms512m -Xmx1024m'
备注:
1、JAVA8后面的版本:永久代的参数-XX:PermSize和-XX:MaxPermSize也随之失效
JDK1.8开始方法区(HotSpot的永久代)被彻底删除了,取而代之的是元空间,元空间直接使用的是内存。参数设置:
-XX:MetaspaceSize=N //设置Metaspace的初始(和最小大小)
-XX:MaxMetaspaceSize=N //设置Metaspace的最大大小
二、Tomcat操作
1、ROOT目录
自动覆盖到ROOT目录部署war程序。
修改server.xml,增加Context path=""
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="" docBase="demo" reloadable="true" />
</Host>
备注:当上下文为空值时,同时ROOT目录不存在的时候,部署程序代表demo.war会生成到ROOT目录和webapps目录俩份代码。
2、WEB-GUI界面
修改tomcat-users.xml
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/>