Tomcat优化

Tomcat优化总结(面试准备)
1、掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存
2、内存优化(需要修改启动脚本 bin/catalina.sh)
内存优化主要是对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’
一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。建议设置为70%;建议设置[[初始化内存大小]等于[可以使用的最大内存],这样可以减少平凡分配堆而降低性能。

3、优化连接配置(需要修改配置文件 conf/server.xml)
① 并发优化 ② 缓存优化
示例(修改连接数和开启压缩功能,加快网络传输速度,静态资源文件最好缓存到nginx,减少对tomcat的访问)
  

<Connector port="9027"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8192"
  maxThreads="1000"  <!--maxThreads 客户请求最大线程数-->
  minSpareThreads="100"   <!--minSpareThreads  Tomcat初始化时创建的 socket 线程数-->
  maxSpareThreads="1000"   <!--maxSpareThreads Tomcat连接器的最大空闲 socket 线程数-->
  minProcessors="100"    <!--minProcessors 服务器创建时的最小处理线程数-->
  maxProcessors="1000"   <!-- maxProcessors 服务器同时最大处理线程数 -->
  enableLookups="false"   <!-- enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 -->
  compression="on"     <!-- 打开压缩功能 -->
  compressionMinSize="2048" <!--compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB-->
  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"   <!--压缩类型-->
  connectionTimeout="20000"   <!-- connectionTimeout 连接超时-->
  URIEncoding="utf-8"    <!--  URIEncoding URL统一编码 -->
  acceptCount="1000"   <!--acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )-->
  redirectPort="8443"  <!--redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口-->
  disableUploadTimeout="true"/>

4、集群
用nginx作为请求分流的服务器,后端多个tomcat共享session来协同工作

5、将BIO通讯模式修改为NIO通讯模式
tomcat的运行模式有3种:
bio:默认的模式,性能非常低下,没有经过任何优化处理和支持.
nio:nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
apr:安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.
① tomcat通讯协议支持http1.0和1.1,tomcat默认走的是BIO通讯模式,tomcat7和tomcat8之所以默认的都是效率低下的BIO通讯模式,是因为和前面的旧项目做兼容。
② 在控制台上或者管理界面都可以看到,tomcat启动的通讯模式是bio的。
这里写图片描述
③ 应用场景:tomcat集群的时候,若项目比较新,都是1.5类库之前,即JDK版本大于1.5,可将集群中每一个tomcat的启动模式设置为高并发高性能的应答模式(NIO)。
④ 配置方法:在server.xml中 ,将 改为:  

其中,原来的protocol=”HTTP/1.1”表示遵循http1.1协议,同时,也是一个最原始的未经优化的通信协议,修改之后的 protocol=”org.apache.coyote.http11.Http11NioProtocol” ,表示以 NIO模式启动。

6、启用外部连接池,满足高并发已经复用的请求
这里写图片描述
在connector中指定使用共享线程池
这里写图片描述
查看Tomcat控制台
这里写图片描述

7、禁用AJP连接器
AJP(Apache JServer Protocol)
AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。
这里写图片描述
我们一般是使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用。
① 通过禁用AJP协议,达到在集群的时候提高处理请求的时间。
这里写图片描述
② 启动tomcat后,不论从刚刚的管理员界面,还是从控制台上(如图1所示)都可以看出,AJP协议是开启的。
  我们要做的就是要将此协议禁用,禁用方法:在server.xml中,将  

注释掉,重新启动tomcat,可以看出控制台上已经不存在上图 黑框中所示的。

参考:
https://blog.csdn.net/u010028869/article/details/51793821
https://www.cnblogs.com/xbq8080/p/6417671.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值