Tomcat 使用与调优全解析
Tomcat 使用与调优全解析
1. Tomcat 简介
Tomcat 是 Apache 软件基金会开发的轻量级开源 Web 服务器和 Servlet 容器,广泛用于 Java Web 应用的部署。它实现了 JSP、Servlet 规范,具有高性能、稳定性强、配置灵活等特点,适用于各种规模的 Java Web 应用开发和生产环境。
2. Tomcat 安装与使用
2.1 下载与安装
从 Apache 官网 下载对应版本的 Tomcat,解压即可使用。建议选择稳定版本,以确保安全性和兼容性。
2.2 启动 Tomcat
在 bin
目录下执行启动命令:
- Windows:运行
startup.bat
- Linux/macOS:运行
./startup.sh
默认 Tomcat 监听 8080
端口,可在 conf/server.xml
中修改:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
2.3 部署 Web 应用
- 手动部署:将
war
包放入webapps
目录,Tomcat 会自动解压。 - 使用 Tomcat Manager:访问
http://localhost:8080/manager
,上传war
包进行部署。 - 嵌入式 Tomcat(Spring Boot):无需手动部署,Spring Boot 自带嵌入式 Tomcat。
2.4 配置 SSL(HTTPS)
为了保障数据传输安全,可以开启 HTTPS 访问。在 server.xml
中配置 HTTPS 监听端口和证书路径:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="200"
scheme="https" secure="true"
keystoreFile="conf/keystore.jks" keystorePass="password"
clientAuth="false" sslProtocol="TLS" />
2.5 远程调试
在 catalina.sh
或 catalina.bat
添加如下 JVM 参数,以便通过 IDE 远程调试应用程序:
export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
然后在 IDE 中配置远程调试端口 8000
进行代码调试。
2.6 配置虚拟主机
在同一台服务器上运行多个站点时,可以配置 conf/server.xml
:
<Host name="example.com" appBase="webapps/example" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/var/www/example" />
</Host>
然后在 conf/hosts
添加:
127.0.0.1 example.com
2.7 配置访问日志
在 conf/server.xml
的 Valve
配置中开启访问日志,以便分析请求情况:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t \"%r\" %s %b" />
2.8 配置 MIME 类型
如果需要让 Tomcat 处理新的 MIME 类型(如 WebP),可以在 conf/web.xml
中添加:
<mime-mapping>
<extension>webp</extension>
<mime-type>image/webp</mime-type>
</mime-mapping>
2.9 配置 Session 共享
在多台 Tomcat 服务器之间共享会话(Session),可以使用 Redis 作为存储方案:
<Context>
<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="/path/to/redisson.yaml" />
</Context>
3. Tomcat 关键组件解析
3.1 主要架构
- Server:整个 Tomcat 服务器。
- Service:一个
Server
可以包含多个Service
。 - Connector:负责处理 HTTP 请求,支持 BIO、NIO、APR。
- Engine:核心 Servlet 处理引擎。
- Host:虚拟主机,支持多个域名绑定。
- Context:Web 应用上下文,定义
web.xml
及war
目录结构。
3.2 连接器模式
- BIO(Blocking I/O):传统阻塞模式,适用于低并发场景。
- NIO(Non-blocking I/O):基于
java.nio
,支持高并发请求。 - APR(Apache Portable Runtime):使用本地库优化网络通信,适用于高吞吐量场景。
建议选择 NIO 或 APR,以提高性能。
4. Tomcat 调优
4.1 内存优化
调整 JVM 内存参数,提高 Tomcat 性能:
export CATALINA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m"
4.2 连接池优化
优化数据库连接池参数,以减少数据库压力,提高并发性能:
<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" minIdle="10" maxWait="10000" />
5. Tomcat 监控与排查
5.1 使用 JVisualVM 监控
JVisualVM 是 Java 自带的性能监控工具,可用于查看 CPU、内存、GC 等运行状态。
5.2 使用 Prometheus + Grafana
结合 jmx_exporter
采集 Tomcat 指标,并在 Grafana 进行可视化监控。
6. 总结
Tomcat 作为 Java Web 服务器的核心组件,通过合理配置 JVM
、线程池
、连接池
、负载均衡
、Gzip
等,可以显著提高性能和稳定性。使用 JVisualVM
、Prometheus
等工具进行监控,确保服务器高效运行。
希望这篇文章能帮助你更好地掌握 Tomcat 的使用与优化!🚀