zbb20171108 tomcat 性能优化

  • Post author:
  • Post category:其他


原文地址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