性能优化的入口:
1. 数据库
数据库历来是系统的性能瓶颈。首先找出性能比较低的sql,在代码层面进行优化(可以参看sql性能优化)。
2. 响应时间
对web服务请求的日志分析url的相应时间统计,重点优化响应时间比较长的url。
3. 建模压测
模拟实际场景进行压力测试,根据压测结果,找出系统性能瓶颈。
性能调优的3大设计思路:
1.缓存
使用缓存策略,可以加快数据获取。例如:网络缓存redis、本地缓存ehcache、JVM缓存等。
2.异步
如果对实时性要求不是很高的系统,可以考虑使用异步策略,可以提高相应速度。例如:定时任务、MQ、事件监听机制等。
3.拆分
拆分策略可以高效利用资源。
常见问题的优化方法:
1. 内存溢出(OOM)
a>限制数据库查询结果集的大小
b>根据业务情况限制查询条件,例如限制只能查询一个月之内的数据
c>限制上传文件的大小
d>减小jvm缓存的大小
2. CPU消耗过高
a>使用TOP命令,列出cpu消耗过高的java程序进程
b>使用TOP -Hp <pid>,找出消耗CPU过高的线程,并观察此线程是否一直占用过高的CPU