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 ...
随机推荐
- SQL问题:未启用当前数据库的 SQL Server Service Broker
数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...
- ThreadLocal使用,应用场景,源码实现,内存泄漏
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各 ...
- 爆零系列—补题A
http://codeforces.com/contest/615/problem/A 读错题 结果发现是无脑题 直接标记统计 #include<cstdio> #include< ...
- 数据倾斜是多么痛?spark作业调优秘籍
目录视图 摘要视图 订阅 [观点]物联网与大数据将助推工业应用的崛起,你认同么? CSDN日报20170703——<从高考到程序员——我一直在寻找答案> [直播]探究L ...
- App Store中的开源游戏汇总
这是国外达人收集的曾经在app store上出现过,或者还在app store上卖的iOS开源游戏的列表,其中代码大部分人你托管在google code或者github上,其中有很多使用Cocos2D ...
- FIBON高精度
#include<stdio.h> #include<string.h> int u,n; ],b[],h[]; ],y[],z[]; int main() { char s( ...
- WPF知识点全攻略05- XAML内容控件
此处简单列举出布局控件外,其他常用的控件: Window:WPF窗口 UserControl:用户控件 Page:页 Frame:用来浏览Page页 Border:嵌套控件,提供边框和背景. Butt ...
- 线程调度的问题:Lock Convoy(锁封护)与Priority Inversion(优先级反转)
Lock Convoy(锁封护) [1]Lock Convoy是在多线程并发环境下由于锁的使用而引起的性能退化问题.当多个相同优先级的线程频繁地争抢同一个锁时可能会引起lock convoy问题,一般 ...
- vue引用文件
1)css引入在vue页面中<style scoped> @import url("../assets/css/home.css");</style>2)j ...
- 使用Microsoft Hadoop(一)
To run this program, stage some data in HDFS: 1. create a text file called input.txt that has one in ...