温馨提示×

tomcat在debian怎么优化

小樊
41
2026-09-21 17:29:03
栏目: 智能运维

在 Debian 上优化 Tomcat,一般从系统层、JVM 层、Tomcat 配置层、应用层四个维度来做。下面给你一套实用、可落地的优化清单(以 Tomcat 9/10 为例,Debian 11/12 通用)。


一、系统层优化(Debian)

1. 文件描述符限制

Tomcat 高并发时需要大量 fd。

# 查看当前限制
ulimit -n

# 修改系统限制
vim /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

并在 /etc/systemd/system/tomcat.service 或 /etc/default/tomcat9 中确认:

LimitNOFILE=65535

2. 网络参数(内核)

vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
sysctl -p

3. 使用 systemd 管理(推荐)

不要用 startup.sh 手动跑,用 systemd:

systemctl edit tomcat9

可加:

[Service]
LimitNOFILE=65535

二、JVM 优化(最关键)

1. 设置堆内存

编辑:

/etc/default/tomcat9

或

CATALINA_OPTS="-Xms2g -Xmx2g"

建议:

  • 物理内存 ≤ 4G:-Xms1g -Xmx1g
  • 8G 服务器:-Xms4g -Xmx4g
  • Xms = Xmx,避免 GC 抖动

2. 垃圾回收器选择

JDK 8

-XX:+UseG1GC

JDK 11+

-XX:+UseG1GC
# 或 ZGC(超低延迟)
-XX:+UseZGC

示例:

JAVA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

3. JVM 其他参数

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/tomcat9/heapdump.hprof

三、Tomcat 配置优化

1. 连接器(Connector)优化

编辑:

/etc/tomcat9/server.xml

NIO(默认,推荐)

<Connector
    port="8080"
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    maxThreads="500"
    minSpareThreads="50"
    acceptCount="1000"
    maxConnections="10000"
    connectionTimeout="20000"
    keepAliveTimeout="30000"
    enableLookups="false"
    compression="on"
    compressionMinSize="2048"
    compressableMimeType="text/html,text/xml,text/css,application/javascript"
/>

说明:

  • maxThreads:并发处理线程
  • acceptCount:排队数
  • enableLookups=false:关闭 DNS 反查(提升性能)
  • compression=on:开启 gzip

2. 关闭 AJP(如果不使用)

<!-- 注释掉 -->
<!-- <Connector port="8009" protocol="AJP/1.3" /> -->

3. 静态资源缓存

<Context cachingAllowed="true" cacheMaxSize="10240" />

四、应用 & 部署优化

1. 开启生产模式

export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"

2. Session 优化

  • 减少 Session 使用
  • 使用 Redis 共享 Session(集群时)

3. 禁用自动部署(生产环境)

<Host name="localhost" autoDeploy="false" deployOnStartup="false">

五、监控 & 排错

1. 开启 JMX(安全情况下)

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010

2. 常用工具

  • jstat -gcutil
  • jmap
  • VisualVM / Prometheus + Grafana

六、最简推荐配置(8G 服务器示例)

CATALINA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC -Djava.awt.headless=true"
<Connector port="8080"
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    maxThreads="500"
    acceptCount="1000"
    enableLookups="false"
    compression="on" />

如果你愿意,可以告诉我:

  • Tomcat 版本
  • JDK 版本
  • 并发量 / 接口类型(API / 网站)
  • 是否集群

我可以直接给你一份可直接用的配置。

0 踩