tomcat9优化

Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下:


tomcat9优化



这三种模式的不同之处如下:

· BIO:

一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。

Tomcat7或以下,在Linux系统中默认使用这种方式。

· NIO:

利用Java的异步IO处理,可以通过少量的线程处理大量的请求。

Tomcat8在Linux系统中默认使用这种方式。

Tomcat7必须修改Connector配置来启动:

<connector>

connectionTimeout="20000"redirectPort="8443"/>

· APR:

即Apache Portable Runtime,从操作系统层面解决io阻塞问题。

Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。

Linux如果安装了apr和native,Tomcat直接启动就支持apr。

tomcat9优化



查看当前tomcat使用的协议:

[root@wcr_caf-master logs]# grep "StartingProtocolHandler" catalina.out

11-Jun-2019 15:11:37.766 INFO[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler["http-nio-8080"]

11-Jun-2019 15:11:37.776 INFO[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler["ajp-nio-8009"]

[root@wcr_caf-master logs]#

配置tomcat:==========================start=============================

[root@tomcat1 conf]# vim server.xml

<server>

1.禁用tomcat的AJP协议 注释掉

2.修改通讯模式BIO修改为NIO提高并发处理能力

<connectorport>

connectionTimeout="20000"

executor="tomcatThreadPool"

redirectPort="8443"

minProcessors="2000"

maxProcessors="4000"

maxHttpHeaderSize="8192"

maxThreads="4000"

minSpareThreads="1000"

maxSpareThreads="2000"

acceptCount="4000"

disableUploadTimeout="true"

URIEncoding="UTF-8"

enableLookups="false"

compression="on"

compressionMinSize="2048"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"

/>

3.启用:

<executor>

===================配置end=============================================

#参数说明:

org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio

maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。

minSpareThreads:最小空闲线程数。

maxSpareThreads:最大空闲线程数,如果超过这个值,会关闭无用的线程。

acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。

disableUploadTimeout:禁用上传超时时间

connectionTimeout:连接超时,单位毫秒,0代表不限制

URIEncoding:URI地址编码使用UTF-8

enableLookups:关闭dns解析,提高响应时间

compression:启用压缩功能

compressionMinSize:最小压缩大小,单位Byte

compressableMimeType:压缩的文件类型

---------------------------------------------------------------------------------

tomcat9优化



#grep "StartingProtocolHandler" catalina.out

[root@wcr_caf-master logs]# pwd

/usr/local/tomcat/logs

[root@wcr_caf-master logs]# grep "StartingProtocolHandler" catalina.out

11-Jun-2019 16:45:05.970 INFO[main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler["http-nio-8080"]

[root@wcr_caf-master logs]#

获取tomcat进程pid

ps -ef|grep tomcat

统计该tomcat进程内的线程个数

ps -Lf 29295 |wc -l

[root@wcr_caf-master conf]# ps -Lf `ps-ef|grep tomcat|grep -v grep|awk -F ' ' '{print $2}'`|wc -l

1103

[root@wcr_caf-master conf]#

4.JVM调优生产配置

[root@tomcat1 ~]# vim /usr/local/tomcat8/bin/catalina.sh

# OS specific support. $var _must_ be set to either true or false.下面添加

JAVA_OPTS="-server -Xms1024m -Xmx2048m-XX:PermSize=512m-XX:MaxPermSize=512m-XX:+UseParallelGCThreads=8-XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=80-XX:+UseCMSCompactAtFullCollection

-XX:CMSFullGCsBeforeCompaction=0 -XX:-PrintGC-XX:-PrintGCDetails

-XX:-PrintGCTimeStamps"

--------------------我的------------------------------------------------

JAVA_OPTS="-server -Xms4g -Xmx8g -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m "

-----------------------------------------------

参数

描述

-Xms

堆内存初始大小,单位m、g

-Xmx

堆内存最大允许大小,一般不要大于物理内存的80%

-XX:PermSize

非堆内存初始大小,一般应用设置初始化200m,最大1024m就够了

-XX:MaxPermSize

非堆内存最大允许大小

-XX:+UseParallelGCThreads=8

并行收集器线程数,同时有多少个线程进行垃圾回收,一般与CPU数量相等

-XX:+UseParallelOldGC

指定老年代为并行收集

-XX:+UseConcMarkSweepGC

CMS收集器(并发收集器)

-XX:+UseCMSCompactAtFullCollection

开启内存空间压缩和整理,防止过多内存碎片

tomcat9优化


生效了。

/<connectorport>

/<connector>


分享到:


相關文章: