Tomcat版本介绍 Tomcat配置介绍 VM配置介绍 启动报错排查
- 2015-06-29 21:18:00
- admin
- 原创 3375
一、Tomcat版本介绍
1、Java EE迁移到了Jakarta EE,servlet的命名空间从javax迁移到了jakarta;
2、Jakarta版本情况:https://jakarta.ee/release
3、Spring版本情况:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions
4、Tomat版本情况:https://tomcat.apache.org/whichversion.html
二、Tomcat基础配置
<Connector port="8080" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100"
maxSpareThreads="500" acceptCount="700" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
maxThreads="600",最大线程数;
minSpareThreads="100",初始化时创建的线程数;maxSpareThreads="500",创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程;
acceptCount="700",所有处理请求的线程都被使用时,可以放到处理队列的请求数,超过的请求将不予处理;
connectionTimeout="20000",request URI line和request body最大等待时间;
URIEncoding="UTF-8",Tomcat指定网页编码,中文编码需要设定;
redirectPort="8443",SSL请求端口;
address="127.0.0.1",指定监听地址,默认监听0.0.0.0
enableLookups="true",request.getRemoteHost()会查找DNS;
设置应用URL前缀:<Context docBase="/data/app/myapp/webapps/myapp" path="myapp" reloadable="false" />
path,指定URL前缀,可以设置空串,根斜杠可以不写;
reloadable,发现服务的文件改变时,是否自动重新加载应用,默认false;
unpackWAR,是否解压war运行,解压运行效率更高,覆盖了Host的unpackWARs属性;
应用重复加载:需要设置Host的deployOnStartup和autoDeploy属性到false,否则appBase目录自动加载;
三、Tomcat高级配置
长连接配置:
1、配置项是Connector属性;
2、keepAliveTimeout,默认值是connectionTimeout,20秒;
3、maxKeepAliveRequests,默认值是100个;
开启压缩配置:
1、配置项是Connector属性;
2、compression="on",开启压缩;
3、compressibleMimeType="text/plain,application/json",开启压缩的内容类型;
4、compressionMinSize="2048",达到指定数据量大小才开启压缩;
5、开启压缩后返回头会包含Content-Encoding: gzip;
四、VM配置介绍
在catalina文件前面添加JAVA_OPTS变量,windows对应catalina.bat,linux对应catalina.sh:
JAVA_OPTS="-server -Xms4096m -Xmx4096m -XX:MaxNewSize=1536m"
-server,多个CPU时性能佳,windows缺省client模式,linux缺省server模式;-Xms,初始heap大小,推荐设置为物理内存一半,默认为1/64;
-Xmx,最大heap大小,推荐设置为物理内存一半,默认为1/4;
-XX:MaxNewSize,最大新生代内存 推荐设置为-Xmx的3/8;
-Xss,线程堆栈大小,默认1M,一般不设置;
五、启动报错排查
StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.
1、报错原因一般是因为循环依赖,找到循环依赖文件,解除循环依赖即可,或者jarsToSkip增加对应文件避免部署扫描;
2、tomcat.util.scan.DefaultJarScanner.jarsToSkip,不进行扫描的JAR文件列表,避免扫描到JDK高版本特性;