Tomcat调优总结

本文详细介绍了Tomcat服务器的性能优化方法,包括内存、IO及线程池的优化技巧。通过调整内存配置、使用NIO协议及优化线程池设置,显著提升Tomcat处理高并发请求的能力。

Tomcat优化:

1.tomcat内存优化
tomcat一般都有默认的内存大小,其默认值对整个物理内存来说非常小,如果不配置tomcat的内存,会大大浪费服务器的资源,验证影响系统的性能,所以对tomcat的内存配置对用户量比较大的系统尤为重要。

**Windows平台下在bin目录下的catalina.bat文件中,**找到@echo off然后再它的下面一行添加如下类似语句。

SET CATALINA_OPTS= -Xms512m -Xmx512m -Xmn125m

参数说明:
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:java Heap初始大小。 默认是物理内存的1/64。
-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。
-Xmn:young generation(年轻代)的heap大小。一般为Xmx的3、4分之一
-XX:MetaspaceSize=128m 初始元空间大小,默认一般为21m。
-XX:MaxMetaspaceSize=256m 最大元空间大小,默认无上限,由OS内存决定

Jps 查看tomcat进程
Bootstrap是tomcat进程。
Jmap –heap 1184

Jmeter压力测试
内存512m测试结果
10秒3000
SET CATALINA_OPTS= -Xms512m -Xmx512m -Xmn125m
在这里插入图片描述
内存2G测试结果
SET CATALINA_OPTS= -Xms2048m -Xmx2048m -Xmn500m
在这里插入图片描述
2.tomcat网络优化
默认:

<Connector port="8080" 
	protocol="HTTP/1.1" connectionTimeout="20000"
               redirectPort="8443" />

10秒钟发6000个请求测试如下

在这里插入图片描述
优化:使用nio

<Connector port="8080" 
	protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000"
               redirectPort="8443" />

10秒钟发6000个请求测试如下
在这里插入图片描述
3.线程池优化
调最大线程数:

<Connector port="8080" 
	protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000"
               redirectPort="8443" 
			   maxThreads="400" 
			   调maxThreads
			   />

总结:
Tomcat优化配置文件目录在 :
Windows平台下在bin目录下的catalina.bat文件中
调:内存,io,线程池!

<think>首先,用户的问题是:“我想查找tomcat的相关参数 请问tomcat参数有哪些”。这基于之前的系统级指令,我需要参考提供的引用内容来回答。 引用内容总结: - [^1]: 提到了Tomcat性能概述,包括JVM内存配置、垃圾回收等)、连接器、线程池化、会话管理等。 - [^2]: 提到化措施如去掉web.xml监视、jsp提前编译、加大JVM内存。 - [^3]: 提到性能化参数,包括内存化参数如JAVA_OPTS的设置(-Xms, -Xmx, -Xss等),以及NIO vs APR。 - [^4]: 讨论了JVM参数化,如设置-Xms, -Xmx, -XX:PermSize等。 - [^5]: 分享了完整的JAVA_OPTS配置示例,包括各种GC参数。 用户的问题焦点是“tomcat参数有哪些”,所以我需要列出这些参数。 根据系统指令: 1. 行内数学表达式使用$...$,但这里需要数学公式。 2. 独立公式用$$...$$,但这里也需要公式。 3. LaTeX语法正确,但在中文回答中可能适用数学公式。 4. 使用中文回答。 5. 生成相关问题。 6. 引用的段落末尾添加引用标识,如[^1]。 回答结构要清晰,逐步解决问题。 关键点:tomcat参数主要涉及JVM参数、连接器参数、线程池参数等。 从引用中提取参数: - JVM参数: - 内存设置:-Xms(初始堆大小), -Xmx(最大堆大小), -Xss(线程堆栈大小) - 永久代/元空间:-XX:PermSize, -XX:MaxPermSize(Java 8及之前);在Java 8+,可能是-XX:MetaspaceSize, -XX:MaxMetaspaceSize - GC设置:-XX:+UseParallelGC, -XX:+UseConcMarkSweepGC, -XX:+UseG1GC等 - 从[^3]和[^5]有具体配置:-XX:NewSize, -XX:MaxNewSize, -XX:+UseParNewGC, -XX:+UseCMSCompactAtFullCollection等 - 连接器:如使用NIO或APR/Native,整连接器线程参数(在server.xml中) - 线程池化:配置Executor,如maxThreads, minSpareThreads等 - 其他:启用Sendfile、禁用功能等 我需要组织回答: 1. 介绍Tomcat参数的分类。 2. 详细列出每个类别的参数。 3. 基于引用提供具体示例。 4. 添加引用标识。 最后,生成相关问题。 回答结构: - 开头简要介绍。 - 分点列出参数类别和具体参数。 - 结束时生成相关问题。 使用中文。 </think>### Tomcat参数详解 Tomcat性能是提升Web应用响应能力和稳定性的关键步骤,主要通过配置JVM参数和Tomcat自身组件参数实现。参数主要分为JVM参数(如内存管理、垃圾回收)、Tomcat容器参数(如连接器、线程池)、以及其他设置。下面我将基于提供的引用内容,逐步分类讲解常见参数,并尽可能给出具体示例配置。内容源于可靠的参考引用,确保准确性[^1][^2][^3][^4][^5]。 #### 1. **JVM参数** JVM参数的化是Tomcat的核心,主要通过设置`JAVA_OPTS`环境变量(在`catalina.sh`或`catalina.bat`脚本中)来控制内存分配和垃圾回收行为。常用参数包括: - **内存配置化**:设置堆大小以应对高负载。 - `-Xms`:初始堆大小(如2048MB),建议设为与最大堆一致以减少动态扩展开销[^3][^4]。 ```bash -Xms2048m # 设置初始堆为2GB ``` - `-Xmx`:最大堆大小(如4096MB),避免内存溢出[^4][^5]。 ```bash -Xmx4096m # 设置最大堆为4GB ``` - `-Xss`:线程堆栈大小(如256k),减小可增加并发线程数,但需防止栈溢出[^3][^5]。 ```bash -Xss256k # 设置线程栈大小为256KB ``` - `-XX:PermSize` 和 `-XX:MaxPermSize`:永久代大小(Java 8及之前),用于存储类元数据;Java 8+ 使用 `-XX:MetaspaceSize` 和 `-XX:MaxMetaspaceSize` 替代[^4][^5]。 ```bash -XX:PermSize=256m -XX:MaxPermSize=1024m # Java 7/8示例 ``` - **垃圾回收(GC)化**:选择合适的GC算法提升性能。 - `-XX:+UseParNewGC`:启用并行新生代收集器,适用于多核环境[^3][^5]。 - `-XX:+UseConcMarkSweepGC`:启用并发标记清除GC,减少停顿时间[^5]。 - `-XX:+UseG1GC`:推荐在高内存系统中使用G1收集器(Java 7+),平衡吞吐量和延迟[^1]。 ```bash -XX:+UseG1GC -XX:MaxGCPauseMillis=200 # 设置最大GC停顿200ms ``` - 其他GC参数:如 `-XX:+UseCMSCompactAtFullCollection`(CMS收集器时启用压缩化)和 `-XX:+DisableExplicitGC`(禁用显式GC用)[^3][^5]。 完整JVM参数示例(在`catalina.sh`中添加): ```bash JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xss256k -XX:PermSize=256m -XX:MaxPermSize=1024m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC" ``` 此配置适合高并发场景,确保内存稳定[^3][^4][^5]。 #### 2. **Tomcat容器参数** 这些参数在Tomcat的配置文件(如`server.xml`)中设置,影响连接处理、线程管理等。 - **连接器(Connector)化**:整HTTP/HTTPS连接行为。 - `protocol`:选择高效的协议实现,如`org.apache.coyote.http11.Http11NioProtocol`(NIO)或`org.apache.coyote.http11.Http11AprProtocol`(APR/Native),后者利用操作系统级化提升IO性能[^1][^3]。 ```xml <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" /> ``` - `maxConnections`:最大连接数(默认10000),需根据硬件整。 - `acceptCount`:等待队列大小(默认100),当所有线程忙时,新请求等待的数量[^1]。 - **线程池化**:通过`Executor`配置线程池。 - `maxThreads`:最大工作线程数(默认200),建议设为CPU核心数 * 2 ~ 4倍[^1]。 - `minSpareThreads`:最小空闲线程数(默认10),减少线程创建开销。 ```xml <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" /> ``` - **会话管理化**: - `maxInactiveInterval`:设置会话超时时间(秒),减少内存占用[^1]。 ```xml <Manager sessionTimeout="1800" /> # 30分钟超时 ``` #### 3. **其他化参数** - **静态资源处理**: - 启用`sendfile`功能:在`server.xml`中设置`useSendfile="true"`,提升文件传输效率[^1]。 - **禁用必要功能**: - 关闭JSP监视:修改`web.xml`或使用预编译(如`jspc`工具),减少启动开销[^2]。 - 关闭自动重载:在`context.xml`中设置`reloadable="false"`,避免重复加载类[^1]。 - **文件上传配置**: - 设置`maxPostSize`限制上传大小,防止内存溢出[^1]。 #### 建议总结 - **基准测试**:使用JMX监控或工具(如Apache JMeter)验证效果,避免过度配置[^1][^4]。 - **安全化**:结合硬件资源(如内存大小),逐步整参数;高并发下化JVM和线程池。 - **常见问题**:如内存溢出可增加`-Xmx`,CPU过高则检查GC策略[^1][^4]。 以上参数基于Tomcat 7/8/9版本,实际应用需根据具体环境和监控数据进行微[^1][^3][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值