Tomcat修行之路-8.Tomcat-调优策略

本文探讨了Tomcat的性能调优策略,包括虚拟机内存分配和垃圾回收器的选择。优化关注点在于响应时间和吞吐量。介绍了各种垃圾收集器,如串行、并行、并发和CMS收集器,以及它们各自适用的场景。同时,建议通过调整Tomcat的线程池、连接器配置、禁用AJP连接器和切换IO模式来提升性能。对于高并发场景,推荐使用NIO或APR模式,并提出动静分离的架构设计,利用Nginx处理静态资源以减轻Tomcat负担。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

系统性能的衡量指标主要是相应时间和吞吐量

  1. 响应时间:执行某个操作的耗时;
  2. 吞吐量:系统在给顶时间内能够支持的事务数量,单位为TPS
    优化方向:
  3. JVM虚拟机优化
  4. Tomcat自身

虚拟机运行优化

优化主要分为俩个方向:
内存分配:影响服务的运行效率和吞吐量
垃圾回收策略的优化:不同程度的导致程序运行中断
内存分配-相关参数:
在这里插入图片描述
参数调整实例:

JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m - XX:MaxMetaspaceSize=512m"

调整后可以使用JDK自带的内存映射工具查看:

jhsdb jmap --heap --pid xxx

注:pid为进程编号

垃圾回收器:

介绍:

  1. 串行收集器
    单线程执行所有的垃圾回收工作,适用于单核CPU

  2. 并行收集器(吞吐量收集器)
    以并行的方式执行年轻代的垃圾回收,该方式可以显著降低垃圾回收的开销。(指多条垃圾收集线程并行工作,此时用户线程仍然处于等待状态)适用于多处理器或多线程硬件上运行的数据量较大的应用。

  3. 并发收集器
    以并发的方式执行大部分的垃圾回收工作,以缩短垃圾回收的暂停时间。适用于那些响应时间优先于吞吐量的应用,因为该收集器虽然最小化了暂停时间(指用户线程与垃圾收集线程同时执行,但不一定是并行的,会交替进行),但是会降低应用程序的性能

  4. CMS收集器
    并发标记清除收集器,适用于那些更愿意缩短垃圾回收暂停时间并且负担的起与垃圾回收共享处理器资源的应用

  5. G1收集器
    适用于大容量内存的多核服务器,可以在满足垃圾回收暂停时间目标的同时,以最大可能实现高吞吐量
    在这里插入图片描述
    使用方法:
    在Tomcat的bin/catalina.sh的脚本中,追加如下配置:

    JAVA_OPTS="-XX:+UseConcMarkSweepGC"
    
Tomcat配置调优
  1. 线程池调整:
    在这里插入图片描述

  2. 连接器调整:
    调整Tomcat/conf/serve.xml中关于连接器的配置可以提升应用服务器的性能
    在这里插入图片描述

  3. 禁用AJP连接器
    在这里插入图片描述

  4. 调整IO模式
    Tomcat 8之前默认使用BIO(阻塞式IO),对于每一个请求都要创建一个线程来处理,不适合高并发。之后采用NIO模式(非阻塞式IO)
    在这里插入图片描述

当Tomcat并发性能有较高要求或者出现较高瓶颈时,可以尝试使用APR模式,APR是从操作系统级别解决异步IO问题,使用时需要在操作系统上按照APR和Native(原理:使用JNI技术调用操作系统底层的IO接口)

  1. 动静分离
    架构设计:Nginx+Tomcat Nginx负责静态资源访问,Tomcat负责动态资源(不擅长处理静态资源)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值