当前位置: 首页 > news >正文

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 应用

  1. 手动部署:将 war 包放入 webapps 目录,Tomcat 会自动解压。
  2. 使用 Tomcat Manager:访问 http://localhost:8080/manager,上传 war 包进行部署。
  3. 嵌入式 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.shcatalina.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.xmlValve 配置中开启访问日志,以便分析请求情况:

<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.xmlwar 目录结构。

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 等,可以显著提高性能和稳定性。使用 JVisualVMPrometheus 等工具进行监控,确保服务器高效运行。

希望这篇文章能帮助你更好地掌握 Tomcat 的使用与优化!🚀

相关文章:

  • [Linux]进程
  • 财务会计域——合并报表系统设计
  • 7.2 奇异值分解的基与矩阵
  • 线程通信---java
  • 【Python字符串】\n是什么?它与raw字符串、多行字符串的运用有什么关系?
  • FPGA|Verilog-SPI驱动
  • C++中的构造函数
  • 在 Ubuntu 下通过 Docker 部署 Mastodon 服务器
  • click house扩容方案
  • (四)Linux Miniconda 安装+换源+新建环境+迁移环境
  • C++指针的基本认识
  • Upload-Labs-Linux 1-20
  • Python脚本,音频格式转换 和 视频格式转换
  • 达梦数据库导入数据,通过命令的方式
  • 【Godot4.4】浅尝Godot中的MVC
  • 蓝桥杯—走迷宫(BFS算法)
  • QT | 信号与槽(超详解)
  • 控制系统分类
  • AI赋能Python零代码编程知识技能体系构架
  • 【从零开始学习计算机科学】计算机组成原理(八)输入输出设备 与 输入输出系统