Tomcat 调优技巧:
1、Tomcat自身调优:
①采用动静分离节约Tomcat的性能;
②调整Tomcat的线程池;
③调整Tomcat的连接器;
④修改Tomcat的运行模式;
⑤禁用AJP连接器;

2、JVM调优

具体调优过程:
1、采用动静分离:
静态资源如果都让Tomcat处理的话,Tomcat的性能会被损耗很多,所以我们一般都是采用:NGINX+Tomcat实现动静分离,
让Tomcat只负责jsp文件的解析工作,Nginx实现静态资源的访问。

2、调优Tomcat线程池:
打开Tomcat的server.xml,配置Executor:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000"/>
name:给执行器(线程池)起一个名字;
namePrefix:指定线程池中的每一个线程的name前缀;
maxThreads:线程池中最大的线程数量,假设请求的数量超过了750,这将不是意味着将maxThreads属性值设置为750,它的最好解决方案是使用【Tomcat集群】;
也就是说,如果有1000请求,两个Tomcat实例的情况下设置maxThreads=500,而不在单Tomcat实例的情况下设置maxThreads=1000;
minSpareThreads:线程池中允许空闲的线程数量(多余的线程都杀死);
maxldLeTime:一个线程空闲多久算是一个空闲线程;

3、 调优Tomcat的连接器Connector:
打开Tomcat的server.xml,配置Connector:
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" enableLookups="false" URIEncoding="UTF-8"/>
executor:指定这个连接器所使用的执行器(线程池);
enableLookups=false:关闭DNS解析,减少性能损耗;
minProcessors:服务器启动时创建的最少线程数;
maxProcessors:最大可以创建的线程数;
acceptCount=1000:线程池中的线程都被占用,允许放到队列中的请求数;
maxThreads=3000:最大线程数;
minSpareThreads=20:最小空闲线程数,这里是一直会运行的线程;

4、修改Tomcat的运行模式:
Tomcat8以下版本,默认使用的就是BIO(阻塞式IO)模式,对于每一个请求都要创建一个线程来进行处理,不适合高并发。
Tomcat8以上版本,默认使用的就是NIO模式(非阻塞式IO)

APR:
全称Apache Portable Runtime,是Tomcat生产环境运行的首选方式,如果操作系统未安装APR或者APR路径未指到Tomcat默认可以识别的路径,
则APR模式无法启动,自动切换启动NIO模式。所以必须要安装APR和Native,直接启动就支持APR,APR是从操作系统级别解决异步IO问题,
APR的本质就是使用JNI技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖,提升Tomcat对静态文件的处理性能,当然也可以采用动静分离。

5、禁用AJP连接器:
AJP的全称Apache JServer Protocol,使用Nginx+Tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8442"/>

6、JVM调优:
Tomcat是运行在JVM上的,所以对JVM的调优也是非常有必要的。
找到catalina.sh,在cygwin=false前面添加:
JAVA_OPTS="-Xms256m -Xms512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"
调整堆大小的目的是最小化垃圾收集的时间,以在待定的时间内最大化处理用户的请求。

Tomcat 调优技巧的更多相关文章

  1. Tomcat 调优的技巧 (转)

    描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下 ...

  2. Tomcat 调优的技巧

    转载:www.cnblogs.com/wangsen, https://mp.weixin.qq.com/s/WrIsOOyR7o4SwSXMT0Zecg 最近,看到一篇讲述 Tomcat 调优的文章 ...

  3. [转]Tomcat 调优的技巧

    原文地址:https://mp.weixin.qq.com/s/7_bz3OPoH3x7xkkwkhJhbw Tomcat调优这块,在面试中会经常问道.目前Tomcat调优主要分为2大类,当前解释用的 ...

  4. Tomcat调优及JMX监控

    Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...

  5. 20个Linux服务器性能调优技巧

    Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要 ...

  6. tomcat调优的几个方面(转)

    tomcat调优的几个方面 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本.现在本文使用下面几步来提高Tomcat服务器的性能. 增加JVM堆内存大小 修复 ...

  7. 11 个简单的 Java 性能调优技巧

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...

  8. 11个简单的Java性能调优技巧,傻瓜都能学会!

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...

  9. tomcat 调优-生产环境必备

    目录 1. tomcat 启动慢 1.1 tomcat 获取随机值阻塞 1.2 tomcat 需要部署的web应用程序太多 1.3 tomcat启动内存不足 2 Connector 调优 2.2 Co ...

随机推荐

  1. shell流程语句使用介绍

    1)使用if.case.read例子1:#!/bin/bash#读取终端输入的字符read -p "Please input a Number:" nn1=`echo $n|sed ...

  2. Java面试题全集(下)

    这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...

  3. UVA 10003 cuting sticks 切木棍 (区间dp)

    区间dp,切割dp[i][j]的花费和切法无关(无后效性) dp[i][j]表示区间i,j的花费,于是只要枚举切割方法就行了,区间就划分成更小的区间了.O(n^3) 四边形不等式尚待学习 #inclu ...

  4. spring框架的总结

    http://www.cnblogs.com/wangzn/p/6138062.html 大家好,相信Java高级工程师对spring框架都很了解吧!那么我以个人的观点总结一下spring,希望大家有 ...

  5. map最基本操作

    #include<iostream> #include<map> using namespace std; int main() { /*map<int,char> ...

  6. 【转】SpringBoot 2.0.0新版和SpringBoot1.5.2版本中Tomcat配置的差别

    https://blog.csdn.net/wd2014610/article/details/79587161 2018年春SpringBoot 2.0.0 新版本有了很多新的改变,其中Tomcat ...

  7. null 理解

    值 null 特指对象的值未设置.它是 JavaScript 基本类型 之一. 语法节 null 描述节 值 null 是一个字面量,它不像undefined 是全局对象的一个属性.null 是表示缺 ...

  8. shell脚本,如何写进度条。

    [root@localhost ~]# cat jindutiao.sh #!/bin/bash #进度条 n=$((/)) N=$((/)) ` do sleep 0.01 [ $(($i%$n)) ...

  9. 几种优化web页面加载速度的策略

    剥离静态资源请求到CDN 一般在主域名下的HTTP请求里都会携带大量Cookie信息,最大4KB,每个域名下最多50条:但如果仅仅访问js/css/jpeg等静态资源文件的话是不需要Cookie信息, ...

  10. vim中使用pydiction对python代码进行补全

    在配置完vim插件YouCompleteMe之后,在vim编写python的时候按tab键会报错,E121: Undefined variable: g:pydiction_location Pydi ...