一、背景

        💡 互联网时代,一个简单的系统,就囊括了应用程序、数据库、容器、操作系统、网络等技术,当prod环境一旦出现了性能问题,就可能严重了影响了系统的用户体验,而且还给开发团代带来非常多的困扰,严重时,甚至对公司非常致命的。所以就有了性能调优的这门东西。

二、感受

        Java性能调优不是学一门编程语言,无法通过直线式的思维来掌握和应用,它对于工程师来说,对于技术广度、技术深度都需要有着较高的要求。

技术广度:当出现了性能问题,就可能需要我们协调多方面组件去进行优化。

技术深度:有的性能问题,隐藏的非常深,可能是因为一个小小的,不引人注意的代码,也可能因为线程池的工作队列选错了,等等问题,归根揭底,就是考验对技术的了解程度,既技术深度。

三、概述

1. 为什么要做性能测试和调优

猜想:一款线上产品如果没有经过性能测试,有着严重的性能问题时,会导致什么?

  • 一颗定时炸弹:最开始数据量不多,pv、uv少,可能是数据量随着时间的积慢慢产生,有可能用户量突飞猛涨,当然,如果产品一直半死不活的,就不会有这种问题了。
  • 无法给出报告:当产品经理或者老板想要知道我们系统可以撑住多大的压力的时候,如果我们不清楚我们自己系统的性能问题,这个数据是提供不出来的。
  • 合理资源利用率:达到减少服务器的数量效果,反而性能还能提升n倍。

总结:所以往往需要通过一些压力测试、模拟测试等等,再通过性能调优去优化这些性能问题。好的系统性能调优不仅仅可以提高系统的性能,还能为公司节省资源,这就是性能调优的目的。

2. 直接体现系统的性能的参考因素

  • 响应时间
  • 吞吐量
  • 服务器资源分配使用率
  • 负载承受能力

3. 性能调优的几个方向

  • 代码优化
  • 设计优化
  • 算法优化
  • 时间换空间
  • 空间换时间
  • 参数调优