tomcat学习笔记Tomcat性能优化
Posted 拐柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat学习笔记Tomcat性能优化相关的知识,希望对你有一定的参考价值。
tomcat学习笔记(六)Tomcat性能优化
tomcat性能优化
系统性能的衡量指标,主要是相应时间和吞吐量
1、相应时间:执行某个操作的耗时;
2、吞吐量:系统在给定时间内能够支持的事务数量,单位是TPS(transactions PerSecond),也就是事务数/秒,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。
tomcat优化从两个方面进行
1、jvm虚拟机优化(优化内存模型)
2、tomcat资深配置的优化(共享线程池,IO模型)
优化原则:并没有明确的参数值,需要根据真是生产环境来进行调整。
jvm调优
jvm虚拟机的优化优化主要是内存分配和垃圾回收策略的优化:
1、内存直接影响服务的运行效率和吞吐量
2、jvm垃圾回收机制则会不同程度的导致程序运行中断(我们可以选择不同的垃圾回收策略,调整jvm垃圾回收策略,可以极大减少垃圾回收册数,提升垃圾回收效率,改善程序运行性能)
jvm内存模型主题示意图:
jvm参数调优
调优参数
垃圾回收(GC)策略
垃圾回收性能指标
1、吞吐量:工作时间(排除GC时间)占总时间的百分比,工作时间并不仅是程序运行的时间,还包含内存分配时间
2、暂停时间:由垃圾回收导致的应用程序停止相应次数/时间
垃圾收集器
串行收集器
单线程执行所有的垃圾回收工作,适用于单核CPU服务器。
并行收集器
⼜称为吞吐量收集器(关注吞吐量), 以并⾏的⽅式执⾏年轻代的垃圾回收, 该⽅式可以显著降低垃圾回收的开销(指多条垃圾收集线程并⾏⼯作,但此时⽤户线程仍然处于等待状态)。适⽤于多 处理器或多线程硬件上运⾏的数据量较⼤的应⽤
并发收集器
以并发的⽅式执⾏⼤部分垃圾回收⼯作,以缩短垃圾回收的暂停时间。适⽤于那些响应时间优先于 吞吐量的应⽤, 因为该收集器虽然最⼩化了暂停时间(指⽤户线程与垃圾收集线程同时执⾏,但不⼀定是并⾏的,可能会交替进⾏), 但是会降低应⽤程序的性能
CMS收集器(Concurrent Mark Sweep Collector)
并发标记清除收集器, 适⽤于那些更愿意缩短垃圾回收暂停时间并且负担的起与垃圾回收共享处理器资源的应⽤
G1收集器(Garbage-First Garbage Collector)
适⽤于⼤容量内存的多核服务器, 可以在满⾜垃圾回收暂停时间⽬标的同时, 以最⼤可能性实现⾼吞吐量( JDK1.7之后)
垃圾回收器参数
参数 | 描述 |
---|---|
-XX:+UseSerialGC | 启⽤串⾏收集器 |
-XX:+UseParallelGC | 启⽤并⾏垃圾收集器,配置了该选项,那么 -XX:+UseParallelOldGC默认启⽤ |
-XX:+UseParNewGC | 年轻代采⽤并⾏收集器,如果设置了 -XX:+UseConcMarkSweepGC选项,⾃动启⽤ |
-XX:ParallelGCThreads | 年轻代及⽼年代垃圾回收使⽤的线程数。默认值依赖于JVM使⽤的CPU个数 |
-XX:+UseConcMarkSweepGC(CMS) | 对于⽼年代,启⽤CMS垃圾收集器。 当并⾏收集器⽆法满⾜应⽤的延迟需求是,推荐使⽤CMS或G1收集器。启⽤该选项后, -XX:+UseParNewGC⾃动启⽤。 |
-XX:+UseG1GC | 启⽤G1收集器。 G1是服务器类型的收集器, ⽤于多核、⼤内存的机器。它在保持⾼吞吐量的情况下,⾼概率满⾜GC暂停时间的⽬标。 |
Tomcat配置调优
tomcat调优
1、调整tomcat线程池
2、调整tomcat的连接器
调整tomcat/conf/server.xml 中关于链接器的配置可以提升应⽤服务器的性能。
项目 | Value |
---|---|
maxConnections | 最⼤连接数,当到达该值后,服务器接收但不会处理更多的请求, 额外的请求将会阻塞直到连接数低于maxConnections 。可通过ulimit -a 查看服务器限制。对于CPU要求更⾼(计算密集型)时,建议不要配置过⼤ ; 对于CPU要求不是特别⾼时,建议配置在2000左右(受服务器性能影响)。 当然这个需要服务器硬件的⽀持 |
maxThreads | 最⼤线程数,需要根据服务器的硬件情况,进⾏⼀个合理的设置 |
acceptCount | 最⼤排队等待数,当服务器接收的请求数量到达maxConnections ,此时Tomcat会将后⾯的请求,存放在任务队列中进⾏排序, acceptCount指的就是任务队列中排队等待的请求数 。 ⼀台Tomcat的最⼤的请求处理数量, 是maxConnections+acceptCount |
3、禁用AJP连接器
4、调整 IO 模式
Tomcat8之前的版本默认使⽤BIO(阻塞式IO),对于每⼀个请求都要创建⼀个线程来处理,不适合⾼并发;Tomcat8以后的版本默认使⽤NIO模式(⾮阻塞式IO)
当Tomcat并发性能有较⾼要求或者出现瓶颈时,我们可以尝试使⽤APR模式,APR(Apache Portable Runtime)是从操作系统级别解决异步IO问题,使⽤时需要在操作系统上安装APR和Native(因为APR 原理是使⽤使⽤JNI技术调⽤操作系统底层的IO接⼝)
5、动静分离
可以使⽤nginx+Tomcat相结合的部署⽅案,Nginx负责静态资源访问,Tomcat负责Jsp等动态资 源访问处理(因为Tomcat不擅⻓处理静态资源)。
以上是关于tomcat学习笔记Tomcat性能优化的主要内容,如果未能解决你的问题,请参考以下文章