- 作者刘超,金山西山居技术经理。
- 996 四个月时间研发了一个产品,突然系统瘫痪不可用,重启后无规律的出现不可用。
- 临时解决方案:运维编写重启脚本,低峰期定时排队重启各个业务,治标不治本。
- 问题排查:熟练使用各种 Linux 命令查看线上环境性能指标,dump出日志文件,走读review代码,最后定位到了问题。
- 分析问题、制定解决方案、更新版本等操作,解决问题后,深刻意识到性能调优的重要性。
- 作者后面经历:物流、电商、游戏支付系统等,都存在一个共性。运营大促以及抢购活动,不仅要保证处理请求业务的严谨性,还要经历短时间高并发的考验。
- 实践出真知,生产环境遇到的事故不少,很多坑一点踩平,分享给更多的人。
- 性能调优感受:不是一门语言,无法通过直线思维来掌握和应用,对于工程师的技术广度和深度都有较高的要求。
- 一个简单的系统:应用程序、数据库、容器、操作系统、网络等技术,出现问题,需要协调多方面组件去进行优化,这就是技术广度;性能问题可能隐藏很深,可能因为小小的代码,可能因为线程池的类型选择错误,最终考验的是对技术的了解,这就是技术深度。
- 扎实的计算机基础。
- 习惯透过源码了解技术本质。论坛大部分内容,属于生产者吸收笑话后总结的知识点,能帮助我们快速获取、快速理解。但是这个程度不够,缺失了自己的判断,怎么办?深入源码,分析、总结一项技术的实现原理和优缺点,更客观的学习一项技术,透过源码学习牛人的思维方式、收获更好的编码实现方式。
- 善于追问和总结。为什么这项技术可以提升系统性能?对比其他技术好在哪里?实现原理又是什么?知其然且知所以然” 才是我们积累经验的关键。知道技术背后的实现原理,才能遇到性能问题时,做到触类旁通。
- 上面三点重点很重要。
- 从实战出发,精选高频性能问题,透过 Java 底层源码,提炼出优化思路和它背后的实现原理,最后形成一套“学完就能用的调优方法论”。这也是一线大厂对于高级工程师的要求。
- 模块一,概述。性能调优标准,哪些参数去衡量系统性能;调优过程标准,哪些严格的调优策略,可以排查性能问题,从而解决问题。
- 模块二,Java 编程性能调优。JDK 是 Java 基础的基础库,熟悉 JDK 中各个包中的工具类,可以帮助编写高性能代码。从基础的数据类型讲起,涉及容器再实际应用场景中的调优,还有互联网架构中比较重要的网络通信调优。
- 模块三,多线程性能调优,服务器是多核处理器,多线程编程应用广泛。为了保证线程的安全性,通常会用到同步锁,系统可能会埋下隐患;多线程并发带来的性能问题,模块会重点讲解。
- 模块四,JVM 性能监测及调优。Java 应用程序是运行再 JVM 上的,对 JVM 进行调优可以提升系统性能。重点讲解 Java 的创建和回收、分配内存等。
- 模块五,设计模式调优。设计模式优化架构涉及,结合一些复杂的应用场景,分享设计优化案例。
- 模块六,数据库性能调优。数据库最容易成为整个系统的性能瓶颈,重点分析一些数据库的常用调优方法。
- 模块七,实战演练场。以上六个模块都是基于某个点调优,这里综合性能问题高频出现的应用场景,学习整体调优方法。
- 整个专栏,以点带面,目的交付一套“学完就用的调优方法论”,遇到性能问题,能够调动所学,触类旁通,技术水平更上一层楼。
- “纸上得来终觉浅,绝知此事要躬行”。专栏从实战中来,也要应用到实战中去,最终在学习的基础上,融会贯通,补充完善,形成属于你自己的一套调优方法论。
- 评论区查看。
|