一、线程池优化
1.1、线程数优化
<connector …/>
maxThreads:最大线程数,默认是200
minSpareThreads:初始线程数,最小空闲线程数。()
maxSpareThreads:最大空闲线程数,超过的空闲线程会被关闭
acceptCount:最大等待请求数,默认100,当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列
中的请求数,超过这个数的请求将不予处理。
1.2、线程池优化
<Executor name=“线程池名称1” namePrefix="reqexec"maxThreads=“1000”
minSpareThreads="50"maxIdleTime=“60000”/>
namePrefix:线程池中线程名称的前缀。
maxThreads:最大线程数
maxIdleTime:超过最小线程数的线程最大等待时间,单位毫秒。
Executor配置的是线程池
name是线程池名称,可以自定义
namePrefix线程池中的线程的名称前缀
maxThreads最大线程数
minSpareThreads 最小空闲线程数(跟CPU核数一致)
二、内存优化
打开catalina.bat文件,添加内存配置选项到Catalina.bat文档中,参考如下:
JAVA_OPTS=“server Xms256M Xmx512M Xss256K Djava.awt.headless=true Dfile.encoding=utf8 XX:MaxPermSize=
256M XX:PermSize=128M XX:MaxPermSize=256M”
server:启用jdk的server版本。
Xms:虚拟机初始化时的最小堆内存。
Xmx:虚拟机可使用的最大堆内存。 #Xms与Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
XX:MaxNewSize:新生代占整个堆内存的最大值。
XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。
JVM配置官方文档
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
GC回收官方文档
https://www.oracle.com/technetwork/java/javase/gctuning6140523.html
Tomcat的问题与优化三、I/O运行模式
BIO:阻塞IO流:protocol=“HTTP/1.1” (早期版本默认BIO)
NIO:非阻塞IO流(8.0版默认模式,并发性能比较好):protocol=org.apache.coyote.http11.Http11NioProtocol
APR:从操作系统级别来解决并发IO问题:protocol=“org.apache.coyote.http11.Http11AprProtocol”
配置server.xml: