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 ...
随机推荐
- iOS图片目录批量复制到android图片目录
复制shell脚本 #!/bin/bash for i in `ls` do for imgname in `ls $i | grep '^WM.*'` do echo $imgname cp $i/ ...
- Cayley凯莱定理——一一对应
定理 过$n$个有标志顶点的树的数目等于$n^{n-2}$. 此定理说明用$n-1$条边将$n$个已知的顶点连接起来的连通图的个数是$n^{n-1}$.也可以这样理解,将n个城市连接起来的树状网络有$ ...
- WPF中播放视频音频
首先要在WPF中播放视频和音频,我们就需要用到MediaElement控件,下面我们示例播放音频和视频. 用MediaElement播放音频: 第一步:将你需要播放的音频(mp3)放在你WPF项目的D ...
- javascript 中设置window.location.href跳转无效问题解决办法
javascript 中设置window.location.href跳转无效问题解决办法 问题情况 JS中设置window.location.href跳转无效 原因是 a标签的href跳转会执行在wi ...
- OpenCV2:第十一章 图像转换
一.简介 二.例子 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #inclu ...
- VS2019 KEY
VS2019正式版 密钥 Visual Studio 2019 破解 激活码 Key Visual Studio 2019 Enterprise 企业版(亲测可用):BF8Y8-GN2QH-T84 ...
- javase(4)_数组
一.数组概述 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任意类型,包括基本类型和 ...
- Window命令行杀进程
Window命令行杀进程 1.查看任务列表 tasklist 2.以映象名杀 taskkill -t -f -im xx.exe 3.以进程杀死 taskkill /pid pid号 /f 4.针对w ...
- ios 登录功能学习研究
登录功能是我在湖畔做的第一个需求. 当时PD给我的草图和下图类似: (图片来自知乎iOS客户端登录界面) 不过需求中要求用户名或者密码错误时,输入框要抖动(类似Mac登录密码错误的抖动效果). 如果实 ...
- C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...