快速判断与定位
$CATALINA_HOME/logs/catalina.out、localhost.log;必要时开启访问日志 AccessLogValve 观察响应时长分布。ulimit -n(文件描述符)、CPU/内存、网络延迟与丢包。常见根因与对应处置
关键配置示例
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" <!-- 20秒 -->
maxThreads="200"
minSpareThreads="25"
acceptCount="100"
maxKeepAliveRequests="100"
disableUploadTimeout="true"
redirectPort="8443" />
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;
}
}
}
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m -Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
spring.datasource.hikari.connection-test-query=select 1
<session-config>
<session-timeout>30</session-timeout>
</session-config>
如同时存在 context.xml 的 Manager 配置,确保与 web.xml 一致(单位秒):<Context>
<Manager className="org.apache.catalina.session.StandardManager"
maxInactiveInterval="1800" />
</Context>
注:上述为示例值,需结合并发量、业务耗时与压测结果调优,切勿简单“拉满”。排查顺序与可操作清单
catalina.out 与 localhost.log 中检索关键字(如 “timeout”, “SocketTimeout”, “read timed out”),确认超时发生的阶段与堆栈。ulimit -n 提升文件描述符;必要时扩容或限流。acceptCount 判断是否大量排队。何时考虑架构优化
ip_hash 或 Apache stickysession=JSESSIONID)。