Tomcat版本介绍 Tomcat配置介绍 VM配置介绍 启动报错排查

2015-06-29 21:18:00
admin
原创 3375
摘要:Tomcat版本介绍 Tomcat配置介绍 VM配置介绍 启动报错排查

一、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高版本特性;

发表评论
评论通过审核之后才会显示。