涨薪技术|0到1学会性能测试第52课-Tomcat调优技术
前面的推文我们掌握了Tomcat服务器的3种监控技术知识。今天给大家分享Tomcat调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。
在对Tomcat进行调优之前,需要对Tomcat的结构体系有一个清楚的了解,这对调优起到至交重要的作用,Tomcat结构体系图,如图10-20所示
图10-20 Tomcat结构体系图
Hardware(硬件):关于硬件方面影响性能的主要包括:CPU、内存网络I/O和文件I/O;
OS(操作系统):多处理机操作系统(SMP:Symmetric Multi-Processing)和线程支持情况会影响性能;
JVM:JVM的版本、分配可使用内存值和GC内存回归机制会影响性能;
Tomcat:Tomcat的版本对其性能也会有影响,最近的版本在这方面就做了很大的改进;
Database(数据库):数据库允许的并发连接数、数据库连接池和缓存都会影响性能;
关于Tomcat调优主要包括JVM调优、Tomcat配置、连接器配置和APR配置
01JVM调优
虚拟机中的共划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和持久代(Permanent Generation),如图10-21所示。其中持久代主要存放的是Java类的类信息,与垃圾收集器需要收集的Java对象关系不大,而年轻代和年老代的划分是对垃圾收集影响比较大的。
年轻代
所有新生成的对象首先都是放在年轻代,年轻代的目标是尽可能快速的收集掉那些生命周期短的对象,年轻代分三个区:一个Eden区、两个Survivor区。大部分对象在Eden区中生成,当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个Survivor区满时,此区的存活对象将被复制到第二个Survivor区,当第二Survivor也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,将被复制“年老区(Tenured)”。需要注意,Survivor的两个区是对称的,没先后关系,所以同一个区中可能同时存在从Eden复制过来的对象,和从前一个Survivor复制过来的对象,而复制到年老区的只有从第一个Survivor的对象。而且,Survivor区总有一个是空的,同时,根据程序需要,Survivor区是可以配置为多个的(多于两个),这样可以增加对象在年轻代中的存在时间,减少被放到年老代的可能。
年老代
在年轻代中经历了多次垃圾回收后仍然存活的对象,就会被放到年老代中,因此,可以认为年老代中存放的都是一些生命周期较长的对象。
持久代
用于存放静态文件,如Java类、方法等&#x