Tomcat性能优化

点击此处查看最新的网赚项目教程

一、Tomcat详解

Tomcat是一个开源的Java Servlet容器,也是一个Web服务器。它是Apache软件基金会的Jakarta项目的一部分,最新的稳定版本是Tomcat 10。

Tomcat的主要功能包括:

1. Servlet容器:Tomcat可以运行Java Servlet和JavaServer Pages(JSP)等Web应用程序。它负责接收和处理HTTP请求,将请求发送给对应的Servlet进行处理,并返回响应。

2. Web服务器:Tomcat可以作为一个独立的Web服务器,处理静态资源文件(如HTML、CSS、JavaScript等),支持HTTP和HTTPS协议,并提供基本的Web服务功能。

3. 连接池管理:Tomcat提供了连接池管理功能,可以管理数据库连接、JMS连接等资源的复用和分配,提高应用程序的性能和可伸缩性。

4. 安全管理:Tomcat提供了基于用户角色的访问控制功能,可以配置用户认证、授权和安全策略,保护Web应用程序的安全性。

5. 集群和负载均衡:Tomcat支持将多个Tomcat服务器组成集群,实现负载均衡和高可用性,提供更好的性能和可扩展性。

6. JMX支持:Tomcat集成了Java Management Extensions(JMX)技术,可以通过JMX接口对Tomcat进行监控和管理。

Tomcat是一个轻量级的Servlet容器,易于使用和部署。它广泛应用于Java Web应用程序的开发和部署,特别是在中小型项目中被广泛采用。

二、Tomcat性能调优

1、提高Tomcat性能一般从三方面入手,JVM内存调整、禁用DNS查询、调整线程数。

禁用DNS查询

调整线程数

三、Tomcat内存调整(JVM内存调整)

Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS参数。

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"

用途

JVM选项

含义

内存设置

-Xms1024M

设置JVM启动时堆栈内存大小

内存设置

-Xmx2048M

设置JVM可扩展的最大堆栈内存

内存设置

-XX:PermSize=256M

设置非堆内存初始值,默认时物理内存的1/64

内存设置

-XX:MaxPermSize=256M

设置最大非堆内存的大小,默认是物理内存的1/4

调试安全性

-Djava.security.debug=all

出于安全性,打开所有调试输出

调试

-enableassertions

启用assertion检查

调试

-verbose:class

启用verbose class加载调试输出

调试

-verbose:gc

启用verbose garbage collection调试输出

图形显示

-Djava.awt.headless=true

允许在没有图形显示所安装的软件的情况下运行JVM。有时我们会在J2EE工程中使用一些图表工具如:jfreechart,用于在web网页输出GIF/JPG等流,在winodws环境下,一般在输出图形时不会碰到什么问题,但是在linux/unix环境下经常会碰到一个exception,因此加上这个参数以免避这样的情况出现。

本地化

-Duser.language=en

设置Tomcat使用的绑定语言

本地化

-Dfile.encoding=UTF-8

设置Tomcat使用的默认文件编码规则

操作

-XX:+DisableExplicitGC

标志自动将System.gc()调用转换成一个空操作,就是应用中调用System.gc() 会变成一个空操作。最主要的原因是为了防止某些手贱的同学在代码里到处写 System.gc()的调用而干扰了程序的正常运行。

四、Tomcat并发优化

Tomcat连接相关参数在Tomcat 配置文件 server.xml 中的配置中参数说明

参数

含义

minProcessors

最小空闲连接线程数,用于提高系统处理性能,默认值为10

maxProcessors

最大连接线程数,即并发处理的最大请求数,默认值为75

acceptCount

允许的最大连接数,应大于等于maxProcessors,默认为100

enableLookups

是否反查域名,取值为:true或false。为了提高处理能力应设置为false

connectionTimeout

网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为30000 毫秒

其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是1000 个左右。二. 调整连接器connector的并发处理能力参数说明

参数

含义

maxThreads

客户请求最大线程数

minSpareThreads

Tomcat初始化时创建的 socket 线程数

maxSpareThreads

Tomcat连接器的最大空闲 socket 线程数

enableLookups

若设为true, 则支持域名解析,可把 ip 地址解析为主机名

redirectPort

在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口

acceptAccount

监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )

connectionTimeout

连接超时

minProcessors

服务器创建时的最小处理线程数

maxProcessors

服务器同时最大处理线程数

URIEncoding

URL统一编码

五、Tomcat缓存优化

参数

含义

compression

打开压缩功能

compressionMinSize

启用压缩的输出内容大小,这里面默认为2KB

compressableMimeType

压缩类型

connectionTimeout

定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

六、实例说明

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效:使用方式:sudo lsof -i:Tomcat端口号lsof -i:8080结果:COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEjava    8545 root   54u  IPv6  46367      0t0  TCP *:webcache (LISTEN)使用方式:sudo jmap -heap Tomcat进程号jmap -heap 8545结果:Attaching to process ID 8545, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.121-b13
using thread-local object allocation.Parallel GC with 2 thread(s)
Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 2147483648 (2048.0MB) NewSize = 268435456 (256.0MB) MaxNewSize = 268435456 (256.0MB) OldSize = 805306368 (768.0MB) NewRatio = 2 SurvivorRatio = 8 MetaspaceSize = 21807104 (20.796875MB) CompressedClassSpaceSize = 1073741824 (1024.0MB) MaxMetaspaceSize = 17592186044415 MB G1HeapRegionSize = 0 (0.0MB)
Heap Usage:PS Young GenerationEden Space: capacity = 201326592 (192.0MB) used = 116850968 (111.4377670288086MB) free = 84475624 (80.5622329711914MB) 58.04050366083781% usedFrom Space: capacity = 33554432 (32.0MB) used = 0 (0.0MB) free = 33554432 (32.0MB) 0.0% usedTo Space: capacity = 33554432 (32.0MB) used = 0 (0.0MB) free = 33554432 (32.0MB) 0.0% usedPS Old Generation capacity = 805306368 (768.0MB) used = 0 (0.0MB) free = 805306368 (768.0MB) 0.0% used
14823 interned Strings occupying 1411808 bytes.使用方式:jstat -gcutil PID结果jstat -gcutil 8545 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 0.00 58.04 0.00 17.28 19.76 0 0.000 0 0.000 0.000参数说明:0:Heap上的 Survivor space 0 段已使用空间的百分比 S1:Heap上的 Survivor space 1 段已使用空间的百分比 E:Heap上的 Eden space 段已使用空间的百分比 O:Heap上的 Old space 段已使用空间的百分比 P:Perm space 已使用空间的百分比 YGC:从程序启动到采样时发生Young GC的次数 YGCT:Young GC所用的时间(单位秒) FGC:从程序启动到采样时发生Full GC的次数 FGCT:Full GC所用的时间(单位秒) GCT:用于垃圾回收的总时间(单位秒)

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: qs62318888

主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注