性能调优
1、调优tomcat的线程池
1、1打开tomcat下的conf找到server.xml
name : 执行器(线程池)的名字
namePrefix : 指定线程池中的每一个线程的name前缀
maxThreads:线程池中最大的线程数量
假设:请求的数量超过了“700,这将不是意味着将maxThreads属性值设置为“700解决方案是使用“Tomcat集群”。
也就是说,如果有“500”请求,两个Tomcat实例设置“maxThreads= 250”,而不在单Tomcat实例的情况下设置maxThreads=500。
minSpareThreads :线程池中允许空闲的线程数量(多余的线程都杀死)
maxIdLeTime:一个线程空闲多久算是一个空闲线程
(2)调优tomcat的连接器Connector
tomcat/conf/server.xml 配置Connector
executor
指定这个连接器所使用的执行器(线程池)
2.1bleLookups="false":
关闭dns解析,减少性能损耗
2.2minProcessors:服务器启动时创建的最少线程数
2.3maxProcessors:最大可以创建的线程数
2.4acceptCount="1000" :线程池中的线程都被占用,允许放到队列中的请求数
2.5maxThreads="3000" :最大线程数
2.6和压缩有关系的配置
如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,
那么也就不需要配置在 Tomcat 中配置压缩了
一个完整的配置
(3)通过修改tomcat的运行模式(BI阻塞模式)
Tomcat8以下版本,默认使用的就是BIO(阻塞式IO)模式
对于每一个请求都要创建一个线程来进行处理,不适合高并发
NIO
Tomcat8以上版本,默认使用的就是NIO模式
非阻塞式Io
APR(Apache Portable Runtime)
(1mcat生产环境运行的首选方式
(2操作系统未安装apr或者apr路径未指到Tomcat默认可识别的路径,
则apr模式无法启动,自动切换启动nio模式。
所以必须要安装apr和native,直接启动就支持apr
(3是从操作系统级别解决异步IO问题,apr的本质就是使用jni(java native interface)
技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖
(4Tomcat对静态文件的处理性能,当然也可以采用动静分离
禁用AJP连接器
Apache JServer Protocol
使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用
二、jvm条用
tomcat是运行在jvm上的,所以对jvm的调优也是非常有必要的
2、1调优内存
vim 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:+Disabl eExplicitGC"