网站首页 > 技术教程 正文
作者:王森 来源:https://www.cnblogs.com/wangsen/p/9337969.html
描述
最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优
都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,
tomcat调优大致分为两大类:
一、tomcat的自身调优
- 采用动静分离节约tomcat的性能
- 调整tomcat的线程池
- 调整tomcat的连接器
- 修改tomcat的运行模式
- 禁用AJP连接器
二、jvm的调优
- 调优Jvm内存
tomcat自身调优
采用动静分离
静态资源如果让tomcat处理的话tomcat的性能会被损耗很多,所以我们一般都是采用:nginx+tomcat实现动静分离,
让 Tomcat 只负责 jsp 文件的解析工作,nginx实现静态资源的访问。
调优tomcat的线程池
- 打开tomcat的serve.xml
- 配置Executor
参数解释
- name
- 给执行器(线程池)起一个名字
- namePrefix
- 指定线程池中的每一个线程的name前缀
- maxThreads
- 线程池中最大的线程数量
- 假设:请求的数量超过了“750”,这将不是意味着将maxThreads属性值设置为“750”,它的最好解决方案是使用“Tomcat集群”。
- 也就是说,如果有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。
- minSpareThreads
- 线程池中允许空闲的线程数量(多余的线程都杀死)
- maxIdLeTime
- 一个线程空闲多久算是一个空闲线程
- 其他的配置其实阅读官方文档是最好的:
- tomcat8的配置文档
调优tomcat的连接器Connector
- 打开tomcat的serve.xml
- 配置Connector
参数解释
- executor
- 指定这个连接器所使用的执行器(线程池)
- enableLookups="false"
- 关闭dns解析,减少性能损耗
- minProcessors
- 服务器启动时创建的最少线程数
- maxProcessors
- 最大可以创建的线程数
- acceptCount="1000"
- 线程池中的线程都被占用,允许放到队列中的请求数
- maxThreads="3000"
- 最大线程数
- minSpareThreads="20"
- 最小空闲线程数,这里是一直会运行的线程
- 和压缩有关系的配置
- 如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,
- 那么也就不需要配置在 Tomcat 中配置压缩了
- 一个完整的配置
*关于Connector的配置文档
通过修改tomcat的运行模式
BIO
- Tomcat8以下版本,默认使用的就是BIO(阻塞式IO)模式
对于每一个请求都要创建一个线程来进行处理,不适合高并发
NIO
- Tomcat8以上版本,默认使用的就是NIO模式
- 非阻塞式Io
APR(Apache Portable Runtime)
- 是Tomcat生产环境运行的首选方式
- 如果操作系统未安装apr或者apr路径未指到Tomcat默认可识别的路径,
- 则apr模式无法启动,自动切换启动nio模式。
- 所以必须要安装apr和native,直接启动就支持apr
- apr是从操作系统级别解决异步IO问题,apr的本质就是使用jni(java native interface)
- 技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖
- 提升Tomcat对静态文件的处理性能,当然也可以采用动静分离
禁用AJP连接器
Apache JServer Protocol
使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用
JVM的调优
tomcat是运行在jvm上的,所以对jvm的调优也是非常有必要的。
调优内存
- 找到: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:+DisableExplicitGC"
调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求,
结尾
- 这里只是简单记录一下调优都有哪些途径,更多的是找出思路,具体怎么调需要我们根据实际情况去验证调整。
- 推荐书籍:HowTomcatWorks
猜你喜欢
- 2024-10-12 优化体系--tomcat参数优化(内存、线程、压缩、集群、ARP)
- 2024-10-12 Linux-tomcat部署,注意几点安全配置
- 2024-10-12 很全的Tomcat实战-调优方案,提升性能必备
- 2024-10-12 Tomcat配置与优化--架构师必修课(tomcat7优化配置)
- 2024-10-12 详解tomcat7优化配置参数(tomcat性能优化方法)
- 2024-10-12 tomcat,nginx,mysql性能调优与配置
- 2024-10-12 Tomcat服务器配置详解(tomcat服务器的配置)
- 2024-09-25 Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置
- 2024-09-25 企业十大应用-Tomcat-配置详解(tomcat企业版要收费吗)
- 2024-09-25 Nginx负载均衡与Redis实现Tomcat的session共享基本配置
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)