概 述
在生产环境中,有线上基于java的tomcat应用,而tomcat的默认配置参数,都是设置的很低,尤其是内存和线程配置,如果生产环境中,使用这些默认配置,一旦业务请求量较大时,很容易造成性能瓶颈。
JVM内存配置优化
JVM内存配置的优化主要是对JVM堆内存的优化,堆内存分为年轻代、老年代、永久代这三种,具体详情可以观看JVM的官方文档,这里我就不一一介绍,配置Tomcat的JVM参数可以在Tomcat的启动脚本catalina.sh中设置JAVA_OPTS参数。
1. JAVA_OPTS常见参数说明
- -server:表示启用JDK的Server模式;
- -Xms:表示设置JVM初始堆内存大小;
- -Xmx:表示设置JVM最大堆内存大小;
- -XX:NewSize=:表示设置年轻代大小;
- -XX:MaxNewSize=:表示设置年轻代最大内存大小;
- -XX:PermSize=:表示设置永久代大小;
- -XX:MaxPermSize=:表示设置永久代最大内存大小。
2. JVM内存分配举例
JVM大小设置与服务器的内存有着直接的关系,不能太大,也不能太小,如果服务器的内存大小为32G,可以设置为以下参数:
3. 堆内存大小的设置规则一般如下
1)将初始堆内存大小(Xms)和最大堆内存大小(Xmx)设置为彼此相等,可以减少GC次数和内存伸缩带来的频繁内存申请,从而减少一定的系统开销。
2)堆内存不能设置过大,虽然堆内存多可以减少GC次数,但是太多的堆内存也会导致垃圾回收的时间变长。
3)一般Xmx内存设置不超过物理内存的50%,最大不超过32G。
Tomcat并发优化和缓存优化
Tomcat并发与缓存优化主要对配置文件中的server.xml中的参数进行修改和配置。默认的server.xml文件的一些性能参数配置都很低,无法达到tomcat的最高性能。
1. Tomcat的常见并发参数说明
- maxThreads:表示客户请求最大线程数。
- minSpareThreads:表示Tomcat初始化时创建的Socket线程数。
- maxSpareThreads:表示Tomcat连接器的最大空闲Socket线程数。
- enableLookups:该参数设置为True,则表示支持域名解析,发请求转发到基于SSL的redirectPor端口上。
- redirectPort:表示SSL的redirectPort端口号。
- acceptAccount:表示监听端口队列最大数,满了之后会拒绝请求,不能小于maxSpareThreads。
- connetctionTimeout:表示连接超时时间。
- minProcessors:表示服务器创建时的最小处理线程数。
- maxProcessors:表示服务器同时最大出力线程数。
- URIEncoding:表示统一编码格式。
2. Tomcat缓存参数说明
- compression:表示打开压缩功能。
- compressionMinsize:表示启用压缩的输出内容大小,这里默认2KB。
- compressableMimeType:表示压缩类型。
- connectionTimeout:表示定义建立客户连接超时的时间,-1表示不限制。