Tomcat 调优技巧
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 调优技巧的更多相关文章
- Tomcat 调优的技巧 (转)
描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下 ...
- Tomcat 调优的技巧
转载:www.cnblogs.com/wangsen, https://mp.weixin.qq.com/s/WrIsOOyR7o4SwSXMT0Zecg 最近,看到一篇讲述 Tomcat 调优的文章 ...
- [转]Tomcat 调优的技巧
原文地址:https://mp.weixin.qq.com/s/7_bz3OPoH3x7xkkwkhJhbw Tomcat调优这块,在面试中会经常问道.目前Tomcat调优主要分为2大类,当前解释用的 ...
- Tomcat调优及JMX监控
Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...
- 20个Linux服务器性能调优技巧
Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要 ...
- tomcat调优的几个方面(转)
tomcat调优的几个方面 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本.现在本文使用下面几步来提高Tomcat服务器的性能. 增加JVM堆内存大小 修复 ...
- 11 个简单的 Java 性能调优技巧
大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...
- 11个简单的Java性能调优技巧,傻瓜都能学会!
大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...
- tomcat 调优-生产环境必备
目录 1. tomcat 启动慢 1.1 tomcat 获取随机值阻塞 1.2 tomcat 需要部署的web应用程序太多 1.3 tomcat启动内存不足 2 Connector 调优 2.2 Co ...
随机推荐
- 洛谷 P1449 后缀表达式
题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...
- Stream.iterate方法与UnaryOperator
前提:本人在翻看<Java核心技术II>的时候在p17的时候发现一段代码不是很明白.不知道为什么就输出了1,2,3,4,5,6,7,8,9,10,...也不知道n-n.add(BigInt ...
- labview密码忘记怎么办,如何破解labview密码,vi密码md5码破解重置
labview密码忘记了或者需要破解labview密码,可以找到vi文件的md5码,把里面的md5码拿到网站http://cmd5.la解密就可以了. 把vi文件的32位md5码放到网站cmd5.la ...
- UVALive 4080 Warfare And Logistics (最短路树)
很多的边会被删掉,需要排除一些干扰进行优化. 和UVA - 1279 Asteroid Rangers类似,本题最关键的地方在于,对于一个单源的最短路径来说,如果最短路树上的边没有改变的话,那么最短路 ...
- Latex 分块矩阵的处理
在 \(\mathrm{\LaTeX}\) 中,如果想输入类似的矩阵: 可以这样实现: \[ \left[ \begin{array}{cc|cc|c} \lambda & 0 & 1 ...
- ES6新增rest的用法
arguments类似Array但是并不是Array 而rest就是一个Array 用rest替代atguments eg:给数组排序 //arguments变量的写法: function sortF ...
- jQuery筛选器及练习
jQuery初识 jQuery是什么? jQuery是一个兼容多浏览器的JavaScript库. jQuery能极大地简化JavaScript编程,它的宗旨就是:"Write less, ...
- IP数据包的校验和算法
1.算法思路: IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算IP数据包的校验和.应该按如下步骤: (1)把IP数据包的校验和字段置为0: ( ...
- tkinter学习-文本框
阅读目录 Entry 输入框 Text 文本框 Entry: 说明:输入控件,用于显示简单的文本内容 属性:在输入框中用代码添加和删除内容,同样也是用insert()和delete()方法 from ...
- 剑指Offer(书):链表的倒数第K个节点
题目:输入一个链表,输出该链表中倒数第k个结点. 分析:要注意三点:链表为空:链表个数小于k:k的值<=0; public ListNode FindKthToTail(ListNode hea ...