Ubuntu下JSP性能监控方法与工具
基础环境监控是性能排查的起点,用于确认服务器资源(CPU、内存、磁盘、网络)是否成为瓶颈。
top(动态显示进程CPU占用,按P键按CPU排序)、htop(增强版top,支持鼠标操作)命令,重点关注java进程的CPU使用率(若持续超过70%,可能存在线程阻塞或死循环)。free -m查看内存总量、已用/剩余内存及缓冲区使用;ps aux | grep java查看JVM堆内存分配(如-Xms初始堆大小、-Xmx最大堆大小),若RES(常驻内存)接近Xmx,需考虑扩容。df -h查看各分区磁盘空间(确保/根分区剩余空间大于20%),iotop(需安装)监控磁盘I/O(若java进程的READ/WRITE值过高,可能因频繁读写文件导致性能下降)。iftop(需安装)查看网络接口流量(如eth0),关注入站/出站带宽占用(若带宽占用超过80%,可能导致请求延迟)。日志是排查性能问题的重要线索,通过分析Tomcat日志可快速定位错误、慢请求及资源瓶颈。
catalina.out(包含所有输出)和localhost_access_log.*.txt(记录访问详情,如请求时间、URL、响应状态码),使用grep、awk等工具提取关键信息(如grep " 500 " catalina.out查找500错误,awk '{print $4,$7}' localhost_access_log.2025-10-20.txt | sort | uniq -c统计热门URL)。catalina.out或localhost.date.log中的ERROR级别日志(如数据库连接失败、空指针异常),及时修复导致性能崩溃的异常。应用性能监控(APM)工具可提供CPU、内存、线程、数据库等维度的详细数据,帮助快速定位瓶颈。
jvisualvm命令启动),支持监控本地/远程JVM的CPU、内存、线程状态,还能生成堆转储(Heap Dump)分析内存泄漏(如查看Histogram中的对象数量),适合日常巡检。性能测试是评估JSP应用在高并发场景下表现的重要手段,通过模拟真实用户请求,找出系统的性能极限。
apache-jmeter-5.4.1.tgz),解压后进入bin目录,运行./jmeter.sh启动。http://localhost:8080/test.jsp)。监控的目的是发现问题并优化,结合监控结果可采取以下措施提升JSP性能:
<% %>中的逻辑移至Servlet),使用JSTL/EL表达式替代脚本代码(如<c:forEach>替代<% for() %>),启用JSP缓存(在web.xml中配置<jsp-config><page-encoding>UTF-8</page-encoding><jsp-property-group><url-pattern>*.jsp</url-pattern><el-ignored>false</el-ignored><scripting-invalid>false</scripting-invalid><is-xml>false</is-xml><include-prelude>/WEB-INF/jsp/common/header.jspf</include-prelude><include-coda>/WEB-INF/jsp/common/footer.jspf</include-coda></jsp-property-group></jsp-config>),减少重复渲染。server.xml中<Connector>标签的maxThreads(最大并发线程数,默认200,可根据CPU核心数调整,如4*CPU核心数)、acceptCount(请求队列长度,默认100,队列满则拒绝请求)、connectionTimeout(连接超时时间,默认20000ms);启用JSP预编译(使用jspc工具或Maven插件,在部署前将JSP编译为Servlet,避免首次访问延迟)。maxActive(最大连接数,默认10)、maxIdle(最大空闲连接数,默认5)、minIdle(最小空闲连接数,默认5));开启慢查询日志(MySQL中执行SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 1;),分析并优化慢SQL(如添加索引、避免SELECT *)。-XX:+UseG1GC);调整堆内存大小(-Xms与-Xmx设置为相同值,避免频繁扩容,如-Xms2048m -Xmx2048m);启用GC日志(-Xlog:gc*或-verbose:gc -Xloggc:/var/log/gc.log),分析GC频率与停顿时间(若Full GC频繁,需增加堆内存或优化对象生命周期)。