做这次性能调优主要是项目每当在使用高峰期就会出现卡顿,加载速度慢,严重影响工作效率,因此开始排查故障和调优
一,问题定位
在故障出现时优先打开任务管理器和资源监视器主要查看CPU和内存的使用情况(后面没有遇到相同情况,所有截图都只展示排查和优化步骤),从任务管理器上面看到内存和CPU的使用情况,根据实际情况去找出使用资源最高的程序,当时排查到的是java使用cpu和内存最高,同时mysql占用了大量的IO
然后先从mysql入手,在mysql中可以看到某条sql正在不断的执行,根据该sql去查看程序日志和咨询同事可以定位到报告解析的日志在高峰期执行频繁,关掉改定时任务后程序恢复正常使用,参考:mysql查看正在执行的sql语句 - Bigben - 博客园
如果不熟悉程序的情况可以根据下面步骤定位问题:
1.先拿到进程号
2. 用processExplorer打开该进程
3.双击进程打开线程监控表,并找出使用CPU最高的线程,记下线程号(TID),并转化为十六进制(后面查线程具体内容)18512->4850
4.用命令输出堆信息,从堆信息里面可以查到该线程正在执行的程序,根据:jstack 6492
二,项目优化
优化方面只描述优化过程(后续补充优化思路):
该问题只在高峰期才会出现,通过压测发现并发数在一定的时候接口反馈异常缓慢,经过查看运行日志最终定位到确认是连接池配置最大连接数过少;通过调整后继续测试,接口反馈速度明显提高,同时需要编辑相关启动脚本分配好内存