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 NAME
java 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 Generation
Eden Space:
capacity = 201326592 (192.0MB)
used = 116850968 (111.4377670288086MB)
free = 84475624 (80.5622329711914MB)
58.04050366083781% used
From Space:
capacity = 33554432 (32.0MB)
used = 0 (0.0MB)
free = 33554432 (32.0MB)
0.0% used
To Space:
capacity = 33554432 (32.0MB)
used = 0 (0.0MB)
free = 33554432 (32.0MB)
0.0% used
PS 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官网