Ubuntu 下 JSP 性能监控与分析实操指南
一 监控体系与分层
二 快速上手步骤
三 关键指标与定位方法
| 层面 | 关键指标 | 常用工具 | 典型问题与定位路径 |
|---|---|---|---|
| 系统 | CPU 使用率、负载、内存使用、磁盘 IO、网络带宽 | top/htop、free -m、df -h、iftop | CPU 高:热点方法/线程争用;内存不足:频繁 GC/ OOM;磁盘 IO 高:日志/临时文件/数据库写入;带宽满:静态资源未压缩或未走 CDN |
| Tomcat | 线程池使用率、连接队列、JSP 编译耗时、错误日志 | catalina.out、localhost*.log、error.log | 线程耗尽/队列积压:调优线程池与连接器;JSP 频繁编译:启用预编译;异常堆栈:定位具体 Servlet/JSP 与 SQL |
| JVM | 堆内存、GC 次数/停顿、类加载、线程数 | VisualVM、JMC、JProfiler | 长 GC/频繁 Full GC:调整堆与 GC 策略;内存泄漏:对象分配追踪与引用链分析;线程阻塞/死锁:线程转储与锁分析 |
| 数据库 | 慢查询、连接池占用、锁等待 | JProfiler/APM、JDBC 日志 | 慢 SQL:加索引/改写/分页;连接池满:增大池大小与超时;锁等待:事务隔离与索引优化 |
| 前端与网络 | 首包时间、页面总耗时、静态资源数量与体积 | 浏览器 DevTools、JMeter | 资源过多/过大:合并与压缩、启用 GZIP、静态资源上 CDN、减少 HTTP 请求数 |
| 会话与缓存 | Session 数量、会话大小、缓存命中率 | APM、应用日志 | Session 膨胀:缩短超时、按需创建、分布式会话;缓存未命中:引入 Redis/Memcached 提升命中率 |
四 常见问题与优化要点
五 落地命令与配置示例