Tomcat响应时间过长的常见根因
快速定位步骤
常见场景与对策
| 场景 | 典型现象 | 快速对策 |
|---|---|---|
| 线程池/连接器瓶颈 | P95/P99 高、线程数接近 maxThreads、accept 队列满 | 适度提升 maxThreads(结合 CPU 核数)、合理增大 acceptCount、优化 connectionTimeout;将 Connector 切换为 NIO 提升并发 |
| JVM/GC 长暂停 | 页面偶发卡顿、GC 日志 Full GC 频繁 | 设置合适的 -Xms/-Xmx,选用 G1GC 等低停顿回收器;排查内存泄漏与大对象 |
| 数据库慢查询 | 少数接口持续慢、数据库 CPU 高 | 打开慢查询日志、加索引/改写 SQL、优化连接池(如 maxActive/maxIdle),避免连接泄漏 |
| 静态资源与带宽 | 首屏慢、带宽打满 | 开启 gzip 压缩、启用浏览器/边缘缓存、静态资源由 Nginx/CDN 承载 |
| 磁盘 I/O 高 | 日志/附件读写时响应抖动 | 使用 SSD、优化日志级别与切割、减少同步落盘、异步写 |
| 代码/架构问题 | 特定接口稳定慢、线程阻塞 | 使用异步 Servlet 3.0+ 处理长任务、减少锁竞争、引入缓存、批量/流式处理 |
配置与优化要点