温馨提示×

如何在debian优化tomcat

小樊
37
2026-10-12 07:26:25
栏目: 智能运维

在 Debian 上优化 Tomcat,通常可以从系统层面、JVM 层面、Tomcat 配置、应用层面和安全/运维几个方面来做。下面给你一份比较实用、可落地的优化清单(以 Debian + Tomcat 9/10 为例)。


一、系统层面优化(Debian)

1. 使用合适的内核参数

编辑 /etc/sysctl.conf 或 /etc/sysctl.d/99-tomcat.conf:

net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 10

应用:

sysctl -p

2. 文件描述符限制

Tomcat 高并发需要更多 fd:

# /etc/security/limits.conf
tomcat soft nofile 65535
tomcat hard nofile 65535

如果是 systemd 启动:

# /etc/systemd/system/tomcat.service.d/limits.conf
[Service]
LimitNOFILE=65535

二、JVM 优化(最重要)

1. 设置堆内存

编辑 Tomcat 的 JVM 参数(Debian 通常如下):

# /etc/default/tomcat9 或 /etc/systemd/system/tomcat.service
JAVA_OPTS="-Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"

原则:

  • -Xms = -Xmx(避免动态扩容)
  • 不超过物理内存 70%

2. 垃圾回收器选择

Tomcat 9 + JDK 8:

-XX:+UseG1GC

JDK 11+:

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

示例:

JAVA_OPTS="-Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

3. JVM 基础优化

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

三、Tomcat 配置优化

1. Connector 优化(关键)

编辑 conf/server.xml

NIO(推荐)

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

说明:

  • enableLookups=false(关闭 DNS 反查)
  • compression=on(启用压缩)
  • maxThreads 按 CPU 核数和业务调整

2. 关闭 AJP(如不使用)

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

3. 关闭自动部署(生产)

conf/server.xml

<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="false">

四、会话与缓存优化

1. Session 超时

conf/web.xml

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

2. 静态资源缓存

<Context>
    <Resources cachingAllowed="true" cacheMaxSize="102400" />
</Context>

五、安全与稳定性

1. 以非 root 用户运行

Debian 默认已使用 tomcat 用户,确认:

ps -ef | grep tomcat

2. 删除默认应用

rm -rf /var/lib/tomcat9/webapps/ROOT
rm -rf /var/lib/tomcat9/webapps/docs
rm -rf /var/lib/tomcat9/webapps/examples

六、运维与监控

1. 开启 JMX(按需)

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"

2. 日志优化

conf/logging.properties

  • 降低 DEBUG
  • 使用 logrotate

七、简单性能检查清单

# CPU / 内存
top / htop

# 端口连接
ss -ant | wc -l

# GC 情况
jstat -gcutil <pid> 1000

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

  • Debian 版本
  • Tomcat 版本
  • JDK 版本
  • 并发量 / 业务类型(API / 管理后台 / 高并发)

我可以直接帮你给出可复制的配置文件。

0 踩