原文地址http://www.cnblogs.com/NiceTime/p/6665416.html
1)内存优化
(
调整配置堆的大小,修改文件:
catalina.sh)
JAVA_OPTS=”-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -XX:MinHeapFreeRatio=80 -XX:MaxHeapFreeRatio=80 -XX:ThreadStackSize=512
-XX:NewSize=128m
-XX:MaxPermSize=64m
-XX:NewRatio=4 -XX:SurvivorRatio=8
-XX:+AggressiveOpts -XX:+UseBiasedLocking
-XX:+UseConcMarkSweepGC -XX:+ScavengeBeforeFullGC
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:../logs/performance_gc.log
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../logs/performance_heapdump.hprof
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true”
开启飞行记录
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true
参数说明,可参考jvm
的配置:
-server
:服务器模式,该参数放置在配置项的首位置
-Xms
:堆的初始大小,单位
MB
配置
-Xms
与
-Xmx
一致,为可用内存的
80%
-XmX
:堆的最大大小,单位
MB
-Xmn
:新生代的初始大小,单位
MB
为堆大小的
3/8
在使用jmc
工具时,如需要打开飞行记录,需要配置以下
3
个参数,不用时可以先不配置:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true
2)
配置文件中配置项的优化
(
修改文件:
server.xml)
a)
更改
IO
模式
将bio
协议模式更改为
nio/nio2
协议模式
bio
模式协议:HTTP1.1
nio
模式协议:
org.apache.cotyote.http11.Http11NioProtocol
nio2
模式协议:
org.apache.cotyote.http11.Http11Nio2Protocol
apr
模式协议:
org.apache.coyote.http11.Http11AprProtocol
bio
协议模式,适用于简单流程
nio
协议模式,适用于后台耗时的请求的操作
ARP
模式:
tomcat
以
jni
方式调用
apache http
服务器的核心动态链接库来处理文件或网络传输操作
b)
调整连接器模式
Executor
方面 可在
tomcat
组件之间共享,减少创建销毁线程的消耗,提高线程的使用效率
3)
设置会话超时时间
(
修改文件:
web.xml)
配置项:<session-timeout>30</session-timeout>
单位为分钟
4)
文件配置说明
a)tomcat-user.xml
<role rolename=”manager-gui” />
<role rolename=”manager-script” />
<role rolename=”manager-status” />
<role rolename=”manager-jmx”/>
<user username=”admin” password=”123456″ roles=”manager-gui,manager-script,manager-status,manager-jmx” />
</tomcat-users>
b)web.xml
#
配置项:<session-timeout>30</session-timeout>
单位为分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
c)server.xml
<!– Prevent memory leaks due to use of particular java/javax APIs
防止
jre
内存泄漏
–>
<Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />
1)
单一配置方式
<!–
连接器设置
–>
<Connector
port=”8080″
protocol=”org.apache.coyote.http11.Http11AprProtocol” —
协议类型
disableUploadTimeout=”true”
keepAliveTimeout=”20000″
connectionTimeout=”20000″ —
已接受,但未被处理的请求的等待超时时间
ms
redirectPort=”8443″ —
安全通信的转发端口
URIEncoding=”UTF-8″–URL
编码字符集
minSpareThreads=”100″ —
默认初始化和保持空闲的线程数
enableLookups=”false”–
关闭
DNS
反向查询
useURIValidationHack=”false” —
关闭不必要的检查
maxThreads=”1000″ —
处理请求线程的最大数目 未配置为
200
此属性会被忽略
acceptCount=”1000″ —
所用可能的线程都在使用时传入连接请求的最大长度
disableUploadTimeout=”true” —
设置允许更长的超时连接
maxConnections=”1000″–
接受和处理的最大连接数
(nio/nio2 1000
,
apr 8192)
maxHttpHeaderSize=”8192″–
请求和响应
http
头的最大大小
8k
tcpNoDelay=”true” –tcp
不延迟
compression=”on”–
是否启用压缩
on off force
compressionMinSize=”2048″ —
压缩前数据最小值
2k byte
noCompressionUserAgents=”gozilla,traviata” —
设置哪些浏览器不压缩
compressableMimeType=”text/html,text/xml,text/css,application/javascript,text/plain” —
设置压缩的文件类型
/>
一般只需要进行上面的配置即可
2)
使用线程池的方式
<!–
连接池设置
–>
<Executor
name=”tomcatThreadPool” —
线程池名
namePrefix=”catalina-exec-” —
线程名称前缀
namePrefix+threaNumber
maxThreads=”1000″ —
池中最大线程数
minSpareThreads=”100″ —
活跃线程数 会一直存在
maxIdleTime=”60000″ —
线程空闲时间,超过该时间,线程会被销毁
ms
maxQueueSize=”Integer.MAX_VALUE” —
被执行前线程的排队数目
prestartminSpareThreads=”false” —
启动线程池时,是否启用
minSpareThreads
部分线程
threadPriority=”5″ —
线程池中线程优先级
1~10
className=”org.apache.catalina.core.StandardThreadExecutor” —
线程实现类 自定义线程需时间
org.apache.catalina.Executor
类
/>
<!–
当配置了连接池时,需要配置该连接器
–>
<Connector
executor=”tomcatThreadPool” —
线程池名
port=”8080″
protocol=”org.apache.coyote.http11.Http11AprProtocol”
connectionTimeout=”20000″
redirectPort=”8443″ />
转载于:https://www.cnblogs.com/super-admin/p/7804613.html