java项目性能分析

概述

排除性能思路:压力机、网络、应用到后端所有机器的负载;应用服务日志、中间件连接数、jc、线程状态;sql慢查询、索引失效等情况;查看cpu消耗程序;外部依赖、时间消耗、分块检测。

详情

压力机:  首先检查是否是压力机自身问题,如脚本和操作系统的性能指标

时间消耗: 查看所有中间件上面的时间消耗大致消耗在哪

网络:检查网络是否达到光纤上限

应用服务到后端机器:所有机器操作系统的负载情况

应用服务日志:查看应用日志是否有明显报错

中间件连接数:查看mysql、tomcat、nginx等连接数

jc:用jstat或者jmap查看GC是否有内存泄漏,查看应用程序的catalina.out日志

线程状态:用jstack查看是否有线程阻塞,线程状态

通过jprofiler监控应用程序:找出耗时较长的方法

sql慢查询:通过mysql自带内部慢查询工具,查看慢sql

检查数据库执行计划:是否有全表扫描或者索引失效等情况

外部依赖:外部依赖系统性能差也可能导致性能差

模块隔离:不好定位的问题采用模块隔离法进行问题定位

案例分析

线程阻塞

现象:tps差,响应时间长,cpu上不去

分析:gc情况,cpu使用率没问题,把日志导出来发现线程状态有阻塞。定位到log4j.xm 这一类阻塞,它容易引起线程阻塞。

优化:降低日志级别 & 更换组件成logback性能提升

监控工具:命令(jstack  tomcatid -A 20 BLOCKED 或WAITING  >a.log)、可视化工具(jvisualvm监控至少有两道红杠)

 

posted on 2020-02-14 22:15  喝了少不如不喝  阅读(508)  评论(0编辑  收藏  举报

导航