Tomcat 调优的技巧 (转)

描述

最近在补充本身的短板,恰好整理到Tomcat调优这块,基本上面试必问,因而就花了点时间去搜集一下tomcat调优
都调了些什么,先记录一下调优手段,更多详细的原理和实现之后用到时候再来补充记录,下面就来介绍一下,
tomcat调优大体分为两大类:html

1、tomcat的自身调优

  • 采用动静分离节约tomcat的性能
  • 调整tomcat的线程池
  • 调整tomcat的链接器
  • 修改tomcat的运行模式
  • 禁用AJP链接器

2、jvm的调优

  • 调优Jvm内存

tomcat自身调优

采用动静分离

静态资源若是让tomcat处理的话tomcat的性能会被损耗不少,因此咱们通常都是采用:nginx+tomcat实现动静分离,
让 Tomcat 只负责 jsp 文件的解析工做,nginx实现静态资源的访问。java

调优tomcat的线程池

  • 打开tomcat的serve.xml
  • 配置Executor

参数解释

  • name
    给执行器(线程池)起一个名字
  • namePrefix
    指定线程池中的每个线程的name前缀
  • maxThreads
    线程池中最大的线程数量
    假设:请求的数量超过了“750”,这将不是意味着将maxThreads属性值设置为“750”,它的最好解决方案是使用“Tomcat集群”。
    也就是说,若是有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的状况下设置maxThreads=1000。
  • minSpareThreads
    线程池中容许空闲的线程数量(多余的线程都杀死)
  • maxIdLeTime
    一个线程空闲多久算是一个空闲线程
    其余的配置其实阅读官方文档是最好的:
    tomcat8的配置文档

调优tomcat的链接器Connector

  • 打开tomcat的serve.xml
  • 配置Connector

参数解释

  • executor
    指定这个链接器所使用的执行器(线程池)
    nginx

  • enableLookups="false"
    关闭dns解析,减小性能损耗
  • minProcessors
    服务器启动时建立的最少线程数
  • maxProcessors
    最大能够建立的线程数
  • acceptCount="1000"
    线程池中的线程都被占用,容许放到队列中的请求数
  • maxThreads="3000"
    最大线程数
  • minSpareThreads="20"
    最小空闲线程数,这里是一直会运行的线程
  • 和压缩有关系的配置
    若是已经对代码进行了动静分离,静态页面和图片等数据就不须要 Tomcat 处理了,
    那么也就不须要配置在 Tomcat 中配置压缩了
  • 一个完整的配置
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ##超时时间,毫秒,这里是20秒 redirectPort="443" maxThreads="3000" ##最大线程数 minSpareThreads="20" ##最小空闲线程数,这里是一直会运行的线程 acceptCount="1000" ##接收的队列数 enableLookups="false" ##关闭dns解析,减小性能损耗 server="None" URIEncoding="UTF-8" />

*关于Connector的配置文档面试

经过修改tomcat的运行模式

BIO

  • Tomcat8如下版本,默认使用的就是BIO(阻塞式IO)模式

对于每个请求都要建立一个线程来进行处理,不适合高并发apache

NIO

  • Tomcat8以上版本,默认使用的就是NIO模式
  • 非阻塞式Io

APR(Apache Portable Runtime)

  • 是Tomcat生产环境运行的首选方式
  • 若是操做系统未安装apr或者apr路径未指到Tomcat默承认识别的路径,
    则apr模式没法启动,自动切换启动nio模式。
    因此必需要安装apr和native,直接启动就支持apr
  • apr是从操做系统级别解决异步IO问题,apr的本质就是使用jni(java native interface)
    技术调用操做系统底层的IO接口,因此须要提早安装所须要的依赖
  • 提高Tomcat对静态文件的处理性能,固然也能够采用动静分离

禁用AJP链接器

Apache JServer Protocol
使用Nginx+tomcat的架构,因此用不着AJP协议,因此把AJP链接器禁用
tomcat

JVM的调优

tomcat是运行在jvm上的,因此对jvm的调优也是很是有必要的。服务器

调优内存

  • 找到:catalina.sh
    架构

  • 添加的位置
    并发

  • 尝试的参数设置
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XXermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求,less

结尾

  • 这里只是简单记录一下调优都有哪些途径,更多的是找出思路,具体怎么调须要咱们根据实际状况去验证调整。
  • 推荐书籍:HowTomcatWorks

转载:www.cnblogs.com/wangsen

相关文章
相关标签/搜索