一、tomcat内存优化
打开bin下catalina.bat文件
在文件的第一处非注释行出添加
1 set JAVA_OPTS=-server -Xms2g -Xmx2g -Xss256k
参数含义:
-server:以server模式运行java程序
-Xms:初始化堆内存大小
-Xmx:堆内存最大容量
-Xss:设定每个线程的堆栈大小
JDK9之前ParallelGC作为默认垃圾回收器,优化配置JVM需要设置大量参数,诸如-XX:NewRatio、-XX:SurvivorRatio等等,但随着JDK不断更迭,繁琐的参数已经不再需要且不再支持。JDK9开始,G1作为默认的垃圾回收器,G1GC 不必明确设置新生代大小,其自动调优也十分可靠,对于停顿时间往往在长时间运行后可以达到预期效果。不建议进行过多的配置。
二、tomcat线程池优化
打开conf下server.xml
全局搜索executor,在注释中可以找到,同节点位置添加:
1 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" deamon="true"
2 minSpareThreads="100" maxSpareThreads="300" maxThreads="600"
3 maxQueueSize="1000000" maxIdleTime="60000"
4 prestartminSpareThreads="true"/>
然后搜索Connector,找到tomcat的http连接器,添加连接器与线程池关联
1 <Connector port="8080" protocol="HTTP/1.1"
2 connectionTimeout="20000"
3 redirectPort="8443"
4 executor="tomcatThreadPool" />
参数含义:
namePrefix:线程池中线程的命名前缀。
deamon : 是否守护线程运行,默认为true
minSpareThreads:Tomcat线程池的最小空闲线程数,等于初始的线程数。
maxSpareThreads:Tomcat最大空闲线程数,超过的会被关闭。
maxThreads:Tomcat 可用于处理请求的最大线程数,默认是200。
maxIdleTime :空闲线程的存活时间 默认为60s,当线程空闲超时后,线程被回收
maxQueueSize :任务队列最大大小,默认为Integer.MAX_VALUE (2147483647 )这太大了 有点不合适
prestartminSpareThreads :是否在tomcat启动时就创建minSpareThreads个线程放入线程池,默认为false
executorTerminationTimeoutMillis :在停止executor时,等待请求处理线程终止的超时时间
三、Tomcat连接器优化
打开conf下server.xml
搜索Connector,找到tomcat的http连接器,添加参数如下
1 <Connector port="8080" protocol="HTTP/1.1"
2 connectionTimeout="20000"
3 redirectPort="8443"
4 executor="tomcatThreadPool"
5 maxConnections="10000"
6 acceptCount="1000"
7 enableLookups="false" />
参数含义:
maxConnections:最大连接数,当达到该值后,服务器接收但不会处理更多请求,额外的请求将会进入TCP等待队列。默认值为8192。
acceptCount:最大排队等待数,即连接数达到maxConnections后的TCP等待队列。默认为100。
enableLookups: request.getRemoteHost()获取远程计算机ip,Tomcat9默认为关闭。
四、tomcat日志优化
打开conf目录下logging.properties文件
搜索所有编码设置行,进行注释即可
原理:由于tomcat9开始默认为UTF-8编码,鉴于windows默认本地编码不同,会出现日志乱码,解决方法为注掉tomcat配置的编码,这样tomcat就会调用系统默认编码。
五、Tomcat安全优化(适用于生产环境)
移除webapps目录下的所有应用,防止server管理带来的安全漏洞
禁用远程shutdown的端口
1 <Server port="-1" shutdown="SHUTDOWN">
或改变shutdown指令
1 <Server port="8005" shutdown="tomcat_shutdown">
六、Tomcat部署优化(适用于测试环境)
1,配置tomcat管理用户
在tomcat配置文件目录找到tomcat-users.xml
在配置文件tomcat-users标签内添加下列内容
1 <role rolename="manager-script"/>
2 <user username="root" password="root" roles="manager-script"/>
2,开启管理用户通过网络远程热部署
在conf/Catalina/localhost目录中建立manager.xml文件
编辑manager.xml文件内容为
1 <?xml version="1.0" encoding="UTF-8"?>
2 <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
3 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
4 </Context>
3,开发环境tomcat插件配置
打开开发环境中maven项目pom文件,找到maven插件tomcat7-maven-plugin,进行相应的参数配置
1 <plugin>
2 <groupId>org.apache.tomcat.maven</groupId>
3 <artifactId>tomcat7-maven-plugin</artifactId>
4 <version>2.2</version>
5 <configuration>
6 <url>http://127.0.0.1:8080/manager/text</url>
7 <username>root</username>
8 <password>root</password>
9 <update>true</update>
10 <path>/centerbusiness</path>
11 </configuration>
12 </plugin>