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

  • 响应时间:执行某个操作的耗时
  • 吞吐量:系统在给定时间内能够支持的事物数量,单位为TPS(事物数/秒)

Tomcat优化从两个方面进行

  • JVM虚拟机优化
  • Tomcat自身配置优化

虚拟机优化运行(参数调整)

Java虚拟机的运行优化主要是内存分配和垃圾回收策略的优化:

  • 内存直接影响服务的运行效率和吞吐量
  • 垃圾回收机制会不同程度地导致程序运行中断

    Java虚拟机内存相关参数

    | 参数 | 参数作用 | 优化建议 | | —- | —- | —- | | -server | 启动Server,以服务端模式运行 | 服务端模式建议开启 | | -Xms | 最小堆内存 | 与-Xmx设置相同 | | -Xmx | 最大堆内存 | 设置为可用内存的80% | | -XX:MetaspaceSize | 元空间初始值 | | | -XX:MaxMetaspaceSize | 元空间最大内存 | 默认无限 |

调整示例

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

垃圾回收策略

垃圾回收性能指标

  • 吞吐量:工作时间(排除GC时间)占总时间的百分比
  • 暂停时间:由垃圾回收导致的应用程序停止响应次数/时间

    垃圾收集器

  • 串行收集器(Serial Collector):单线程执行所有的垃圾回收工作,适用于单核CPU服务器

  • 并行收集器(Parallel Collector):⼜称为吞吐量收集器(关注吞吐量), 以并⾏的⽅式执⾏年轻代的垃圾回收, 该⽅式可以显著降低垃圾回收的开销(指多条垃圾收集线程并⾏⼯作,但此时⽤户线程仍然处于等待状态)。适⽤于多处理器或多线程硬件上运⾏的数据量较⼤的应⽤
  • CMS收集器(Concurrent Mark Sweep Collector):并发标记清除收集器, 适⽤于那些更愿意缩短垃圾回收暂停时间并且负担的起与垃圾回收共享处理器资源的应⽤
  • G1收集器(Garbage-First Garbage Collector):适⽤于⼤容量内存的多核服务器, 可以在满⾜垃圾回收暂停时间⽬标的同时, 以最⼤可能性实现⾼吞吐量

    Tomcat配置调优

  • 参数调整 | 参数 | 说明 | | —- | —- | | maxConnections | 最⼤连接数,当到达该值后,服务器接收但不会处理更多的请求, 额外的请求将会阻塞直到连接数低于maxConnections 。可通过ulimit -a 查看服务器限制。对于CPU要求更⾼(计算密集型)时,建议不要配置过⼤ ; 对于CPU要求不是特别⾼时,建议配置在2000左右(受服务器性能影响)。 当然这个需要服务器硬件的⽀持 | | maxThreads | 最⼤线程数,需要根据服务器的硬件情况,进⾏⼀个合理的设置 | | acceptCount | 最⼤排队等待数,当服务器接收的请求数量到达maxConnections ,此时Tomcat会将后⾯的请求,存放在任务队列中进⾏排序, acceptCount指的就是任务队列中排队等待的请求数 。 ⼀台Tomcat的最⼤的请求处理数量,是maxConnections+acceptCount |

  • 禁用AJP连接器

  • 调整IO模式(Tomcat8之后默认NIO)
  • 采用APR模式
  • 动静分离