linux

Tomcat日志中的超时问题怎么优化

小樊
44
2025-12-17 07:27:51
栏目: 智能运维

Tomcat日志出现超时时的定位与优化

一、先快速定位超时的类型与链路

二、Tomcat Connector关键参数优化

参数 作用 建议与说明
connectionTimeout 建立连接后等待请求数据的超时 通常 20000–30000;设为 0 表示永不超时,存在风险
keepAliveTimeout 长连接保持时间 与上游(如Nginx)保持一致或略小,常见 15000
maxKeepAliveRequests 每个长连接可处理的请求数 一般 100–200;高并发短连接可设为 1 降低 TIME_WAIT(权衡复用率)
maxThreads 最大工作线程数 依据CPU/IO与业务RT评估,常见 200–500;过小会排队,过大增上下文切换
minSpareThreads 最小空闲线程 保证突发流量的处理能力,如 25
acceptCount 线程耗尽时的排队长度 100;队列满将拒绝新请求
enableLookups DNS反查 设为 false,减少阻塞与开销
maxHttpHeaderSize 请求头最大尺寸 8192(8KB),防止异常大头部攻击
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="30000"
           keepAliveTimeout="15000"
           maxKeepAliveRequests="100"
           maxThreads="300"
           minSpareThreads="25"
           acceptCount="100"
           enableLookups="false"
           maxHttpHeaderSize="8192"
           redirectPort="8443"
           URIEncoding="UTF-8"/>

三、反向代理与上游网关的超时匹配

http {
  upstream tomcat_servers {
    server 192.168.0.101:8080;
    server 192.168.0.102:8080;
  }
  server {
    listen 80;
    location / {
      proxy_pass http://tomcat_servers;
      proxy_connect_timeout 60s;
      proxy_send_timeout    60s;
      proxy_read_timeout    60s;
      send_timeout         60s;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
  }
}

四、应用与数据库层的优化

五、JVM与系统资源的配套调优

export CATALINA_OPTS="$CATALINA_OPTS -Xms1g -Xmx2g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"

0
看了该问题的人还看了