温馨提示×

debian tomcat怎么优化性能

小樊
49
2026-09-18 14:03:46
栏目: 智能运维

在 Debian 上优化 Tomcat 性能,通常从 系统层面、JVM 层面、Tomcat 配置层面、应用层面 四个方向入手。下面给你一套实用、可落地的优化清单(以 Debian + Tomcat 9/10 为例,其他版本类似)。


一、系统层面优化(Debian)

1. 调整文件描述符限制

Tomcat 高并发时需要大量 fd。

# 查看
ulimit -n

# 修改(永久)
sudo vim /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65565535

并确保在 /etc/pam.d/common-session 中有:

session required pam_limits.so

2. 内核参数优化(TCP)

sudo 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

生效:

sudo sysctl -p

二、JVM 优化(最重要)

1. 设置堆内存(不要默认)

编辑:

sudo vim /etc/default/tomcat9

(或 tomcat10,取决于版本)

示例(8G 内存机器):

JAVA_OPTS="-Xms4g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"

✅ 建议:

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

2. 选择 GC(推荐 G1)

JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

高版本 JDK(17+):

-XX:+UseZGC

3. 开启 JVM 监控(可选)

JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat9/"

三、Tomcat 配置优化

1. 修改 server.xml(核心)

sudo vim /etc/tomcat9/server.xml

Connector 优化(NIO2 推荐)

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

说明:

  • enableLookups=false → 禁用 DNS 解析
  • compression=on → 开启 gzip
  • maxThreads 按 CPU 和场景调整(一般 200–800)

2. 关闭 AJP(不用就关)

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

3. 禁用不必要的 Valve

context.xml 或 server.xml 中:

<Valve className="org.apache.catalina.valves.AccessLogValve" />

高并发可改为异步或关闭。


四、静态资源 & 应用层优化

1. 静态资源交给 Nginx

推荐架构:

Nginx -> Tomcat

Nginx 处理:

  • 图片
  • JS / CSS
  • 静态页面

Tomcat 只做动态请求。


2. 开启浏览器缓存

Nginx 示例:

location ~* \.(js|css|png|jpg|gif)$ {
    expires 30d;
}

3. 应用层建议

  • 减少 session 使用
  • 使用连接池(HikariCP)
  • 避免同步阻塞代码
  • 使用缓存(Redis)

五、监控与压测

1. 查看 Tomcat 状态

sudo systemctl status tomcat9
journalctl -u tomcat9

2. 开启 Manager(仅内网)

sudo vim /etc/tomcat9/tomcat-users.xml

3. 压测工具

ab -n 10000 -c 500 http://localhost:8080/
wrk -t8 -c500 -d30s http://localhost:8080/

六、推荐组合(生产级)

✅ Debian 12
✅ Tomcat 10 + JDK 17
✅ NIO2 + G1
✅ Nginx 反向代理
✅ 4–8G JVM 堆


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

  • Tomcat 版本
  • JDK 版本
  • 内存大小
  • 是否是 API / 网站 / 后台系统

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

0 踩