没有合适的资源?快使用搜索试试~ 我知道了~
阿里巴巴java性能调优实战-最新经验总结 PDF
需积分: 1 0 下载量 85 浏览量
2024-03-29
09:43:35
上传
评论
收藏 94.58MB PDF 举报
温馨提示
试读
465页
阿里巴巴java性能调优实战-最新经验总结PDF
资源推荐
资源详情
资源评论
Q:怎样才能做好性能调优?
先给你讲个故事吧。多年前我加入了一家大型互联网公司,刚进入就以 996 标准,参与新
品研发。公司业务发展急需互联网产品,因此我们的时间很紧张,4 个月新产品就上线了。
开始还算顺利,但不久后的一天晚上,系统突然就瘫痪了,重启之后,问题仍然无规律地重
现。当时运维同事马上写了一个重启脚本,定时排队重启各个服务,但也只能做到“治标不
治本”。
作为主力开发,我和公司的系统架构师一起排查问题。架构师轻车熟路地通过各种 Linux
命令在线上环境查看性能指标,也 dump 出日志文件,走查代码,最后定位到了问题,后
面就是分析原因、制定解决方案、更新版本等一系列操作。那是我第一次深刻感受到性能调
优的重要性。
后来的几年里,我又陆续参与过物流、电商、游戏支付系统的研发,这些项目都存在一个共
性,就是经常会运营一些大促以及抢购类活动。活动期间,系统不仅要保证处理请求业务的
严谨性,还要历经短时间内高并发的考验。我也一直处于性能调优的一线。
正所谓“实践出真知“。这些年在生产环境中遇到的事故不少,很多坑一点点踩平,就走出
了一条路,这个过程中我收获了很多实打实的经验,希望能分享给更多的人,我们一起学
习、交流和探讨。
关于性能调优,我先来说说的我的感受。Java 性能调优不像是学一门编程语言,无法通过
直线式的思维来掌握和应用,它对于工程师的技术广度和深度都有着较高的要求。
互联网时代,一个简单的系统就囊括了应用程序、数据库、容器、操作系统、网络等技术,
线上一旦出现性能问题,就可能要你协调多方面组件去进行优化,这就是技术广度;而很多
性能问题呢,又隐藏得很深,可能因为一个小小的代码,也可能因为线程池的类型选择错
误…可归根结底考验的还是我们对这项技术的了解程度,这就是技术深度。
显然,性能调优不是一件容易的事。但有没有什么方法能把这件事情做好呢?接下来跟你分
享几点我的心得。
1. 扎实的计算机基础
我们调优的对象不是单一的应用服务,而是错综复杂的系统。应用服务的性能可能与操作系
统、网络、数据库等组件相关,所以我们需要储备计算机组成原理、操作系统、网络协议以
及数据库等基础知识。具体的性能问题往往还与传输、计算、存储数据等相关,那我们还需
要储备数据结构、算法以及数学等基础知识。
2. 习惯透过源码了解技术本质
我身边有很多好学的同学,他们经常和我分享在一些技术论坛或者公众号上学到的技术。这
个方式很好,因为论坛上边的大部分内容,都是生产者自己吸收消化后总结的知识点,能帮
助我们快速获取、快速理解。但是只做到这个程度还不够,因为你缺失了自己的判断。怎么
办呢?我们需要深入源码,通过分析来学习、总结一项技术的实现原理和优缺点,这样我们
就能更客观地去学习一项技术,还能透过源码来学习牛人的思维方式,收获更好的编码实现
方式。
3. 善于追问和总结
很多同学在使用一项技术时,只是因为这项技术好用就用了,从来不问自己:为什么这项技
术可以提升系统性能?对比其他技术它好在哪儿?实现的原理又是什么呢?事实上,“知其
然且知所以然”才是我们积累经验的关键。知道了一项技术背后的实现原理,我们才能在遇
到性能问题时,做到触类旁通。
在这个专栏里,我将从实战出发,精选高频性能问题,透过 Java 底层源码,提炼出优化思
路和它背后的实现原理,最后形成一套“学完就能用的调优方法论”。这也是很多一线大厂
对于高级工程师的要求,希望通过这个专栏帮助你快速进阶。
那这个专栏具体是怎么设计的呢?结合 Java 应用开发的知识点,我将内容分为七大模块,
从上到下依次详解 Java 应用服务的每一层优化实战。
模块一,概述。为你建立两个标准。一个是性能调优标准,告诉你可以通过哪些参数去衡量
系统性能;另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能
问题,从而解决问题。
模块二,Java 编程性能调优。JDK 是 Java 语言的基础库,熟悉 JDK 中各个包中的工具
类,可以帮助你编写出高性能代码。这里我会从基础的数据类型讲起,涉及容器在实际应用
场景中的调优,还有现在互联网系统架构中比较重要的网络通信调优。
模块三,多线程性能调优。目前大部分服务器都是多核处理器,多线程编程的应用广泛。为
了保证线程的安全性,通常会用到同步锁,这会为系统埋下很多隐患;除此之外,还有多线
程高并发带来的性能问题,这些都会在这个模块重点讲解。
模块四,JVM 性能监测及调优。Java 应用程序是运行在 JVM 之上的,对 JVM 进行调优
可以提升系统性能。这里重点讲解 Java 对象的创建和回收、内存分配等。
模块五,设计模式调优。
在架构设计中,我们经常会用到一些设计模式来优化架构设计。这
里我将结合一些复杂的应用场景,分享设计优化案例。
模块六,数据库性能调优。数据库最容易成为整个系统的性能瓶颈,这里我会重点解析一些
数据库的常用调优方法。
模块七,实战演练场。以上六个模块的内容,都是基于某个点的调优,现在是时候把你前面
所学都调动起来了,这里我将带你进入综合性能问题高频出现的应用场景,学习整体调优方
法。
01 | 如何制定性能调优标准?
我有一个朋友,有一次他跟我说,他们公司的系统从来没有经过性能调优,功能测试完成后
就上线了,线上也没有出现过什么性能问题呀,那为什么很多系统都要去做性能调优呢?
当时我就回答了他一句,如果你们公司做的是 12306 网站,不做系统性能优化就上线,试
试看会是什么情况。
如果是你,你会怎么回答呢?今天,我们就从这个话题聊起,希望能跟你一起弄明白这几个
问题:我们为什么要做性能调优?什么时候开始做?做性能调优是不是有标准可参考?
为什么要做性能调优?
剩余464页未读,继续阅读
资源评论
金克斯在coding
- 粉丝: 1298
- 资源: 127
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功