Tomcat服务器优化方案:内存优化、线程优化(并发优化)、缓存优化

 

Tomcat有很多方面,我从内存、并发、缓存四个方面介绍优化方法。 

Tomcat服务器优化

Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的问题经常会在开发中遇到,面试中也有会问到的时候,所以我决定要记一下。

首先,优化tomcat我给出三个方向:

a) 内存优化:主要是对Tomcat启动参数进行优化,我们可以在Tomcat启动脚本中修改它的最大内存数等等。

b) 线程数优化:Tomcat的并发连接参数,主要在Tomcat配置文件中server.xml中配置,比如修改最小空闲连接线程数,用于提高系统处理性能等等。

c) 优化缓存:打开压缩功能,修改参数,比如压缩的输出内容大小默认为2KB,可以适当的修改。

针对第一点,我们需要了解以下6个参数:

1:-Xms 堆空间初始大小

2:-Xmx 堆空间最大数值

3:-Xmn 年轻代的堆大小

4:-Xss   每个线程堆大小

5:-XX: PermSize 内存永久保留区域 

6:-XX:MaxPermSize 内存最大永久保留区域

这几个参数都是在Tomcat 启动脚本(bin/catalina.bat)中进行配置的,一般开发环境配置时我们就会预先配置好。只要把以下代码加入文件中,并且重启Tomcat即可。

JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=512m"(具体数值按公司服务器大小以及实际自行配置)

第二第三点合在一起优化也是修改Tomcat的配置文件server.xml。初学者一般使用这个文件都是为了修改端口号。

我们打开server.xml找到Connector 标签项,可以看到默认配置如下:

1 <Connector port="8080" protocol="HTTP/1.1"  
2            connectionTimeout="20000"  
3            redirectPort="8443" /> 

其中port代表服务端口;protocol代表协议类型;connectionTimeout代表连接超时时间,单位为毫秒;redirectPort代表安全通信(https)转发端口,一般配置成443。

我们需要调整连接器connector的并发处理能力,比如这样:

复制代码

 1 <Connector port="8080"
 2   protocol="HTTP/1.1"
 3   maxHttpHeaderSize="8192"
 4   maxThreads="1000"
 5   minSpareThreads="100"
 6   maxSpareThreads="1000"
 7   minProcessors="100"
 8   maxProcessors="1000"
 9   enableLookups="false"
10   compression="on"
11   compressionMinSize="2048"
12   compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
13   connectionTimeout="20000"
14   URIEncoding="utf-8"
15   acceptCount="1000"
16   redirectPort="8443"
17   disableUploadTimeout="true"/>

复制代码

参数说明:

  maxThreads 客户请求最大线程数 
  minSpareThreads Tomcat初始化时创建的 socket 线程数 
  maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
  redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
  acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
  minProcessors 服务器创建时的最小处理线程数 
  maxProcessors 服务器同时最大处理线程数 
  URIEncoding URL统一编码
  compression 打开压缩功能 
  compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB 
  compressableMimeType 压缩类型 
  connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

 


  第二种解释:

一.Tomcat内存优化

**

  Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 
  JAVA_OPTS参数说明 
  -server 启用jdk 的 server 版; 
  -Xms java虚拟机初始化时的最小内存; 
  -Xmx java虚拟机可使用的最大内存; 
  -XX: PermSize 内存永久保留区域 
  -XX:MaxPermSize 内存最大永久保留区域 
  服务器参数配置

  现公司服务器内存一般都可以加到最大2G ,所以可以采取以下配置:

  JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’

  配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效: 
  首先查看Tomcat 进程号:

  sudo lsof -i:9027

  我们可以看到Tomcat 进程号是 12222 。 
  查看是否配置生效:

  sudo jmap – heap 12222

  我们可以看到MaxHeapSize 等参数已经生效。

  **

二.Tomcat并发优化

**

  1.Tomcat连接相关参数

  在Tomcat 配置文件 server.xml 中的

  <Connector port="9027"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8192"
  minProcessors="100"
  maxProcessors="1000"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>
  •  

  2.调整连接器connector的并发处理能力

  1>参数说明

  maxThreads 客户请求最大线程数 
  minSpareThreads Tomcat初始化时创建的 socket 线程数 
  maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
  redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
  acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
  connectionTimeout 连接超时 
  minProcessors 服务器创建时的最小处理线程数 
  maxProcessors 服务器同时最大处理线程数 
  URIEncoding URL统一编码

  2>Tomcat中的配置示例

  <Connector port="9027"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8192"
  maxThreads="1000"
  minSpareThreads="100"
  maxSpareThreads="1000"
  minProcessors="100"
  maxProcessors="1000"
  enableLookups="false"
  URIEncoding="utf-8"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>
  •  

  3.Tomcat缓存优化

  1>参数说明

  c ompression 打开压缩功能 
  compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB 
  compressableMimeType 压缩类型 
  connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

  2>Tomcat中的配置示例

  <Connector port="9027"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8192"
  maxThreads="1000"
  minSpareThreads="100"
  maxSpareThreads="1000"
  minProcessors="100"
  maxProcessors="1000"
  enableLookups="false"
  compression="on"
  compressionMinSize="2048"
  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
  connectionTimeout="20000"
  URIEncoding="utf-8"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值