为懒人提供无限可能,生命不息,code不止
作者: whooyun发表于: 2017-03-20 19:40
最近随着公司业务的发展,系统出现了性能瓶颈,急需进行优化。特此记录优化过程,并进行原因分析。
公司B2B系统性能分析方向:
1、系统架构
2、代码质量
3、数据库表设计
4、sql语句
5、RDS数据库性能报表
性能瓶颈产生的现象:
阿里云RDS数据库CPU时常暴涨至100%
下面贴出阿里云RDS实例诊断报告
看阿里云RDS实例诊断报告,阿里云RDS性能分析得出如下结论: 1、看第一张图的蓝圈圈就知道数据库连接数是够用的,而且只用了40%,也就8000个左右,MAX是7992; 2、第二张图展示的是这段时间内执行的sql语句,这个没体现什么东西出来,略过; 3、第三张图展示的是执行慢的sql语句; 4、第四张图展示的是QPS和TPS,CPU,高峰时QPS竟然能有1万/s,说明系统对业务数据缓存的不够,导致了大量的查询;TPS 1k/s以下,而且比较稳定,说明不了什么问题;CPU百分百说明系统一直在对sql语句进行解析,并进行合法性,语义检查,校验用户权限等; 5、看这个IOPS还是比较低的,应该没啥问题; 6、buf request看不出问题。 总结下看了系统架构,数据库表设计,sql语句,java代码后得出结论,并从以下几个方面进行了解决: 1、修改java 代码,减少业务对数据库的查询 2、增加redis缓存,减少对数据库的查询,从而直接从redis缓存获取数据 3、修改所有查询缓慢sql语句,多表关联,并存在多个字查询的语句,并将语句改成预编译; 4、对数据库表需要经常关联的表字段进行冗余(这个需要根据具体业务优化)