美团面试官:Java 性能调优你会多少?一个问题就把我问的哑口无言,哭了
一、前言
什么是性能调优?
性能调优其实很好理解,就是优化硬件、操作系统、应用之间的一个充分的协作,最大化的发挥出硬件的极致性能,来应对高负载的业务需求。
为什么需要性能优化?
其实说到底就是两个原因:
①:为了获得更好的系统性能
②:通过性能调优来满足不断增加的业务需求
性能调优其实作用于我们项目中的很多阶段,项目上线前性能的基本优化,项目上线后也是需要持续不断的性能优化来应对不同时期的业务需求。
我有个朋友现在在阿里是 P7,他认为在 P7 这个职位,特别是像阿里这种体量的企业,以下这些性能调优的技术是必须要掌握的,之后给我分享了他自己这么多年精心整理的性能调优笔记。
经允许,现在也是可以分享这份笔记的完整版给大家了,需要的朋友可以帮 LZ 进行转发+关注,文末可以免费领取!
二、六大性能调优技术(JVM 调优+网络调优+数据库调优+LINUX 内核调优+中间件底层探索+容器环境调优)
手绘板(脑图)
1、JVM 调优
- JVM 调优必备理论知识-Gc COLLECTOR-三色标记
- 垃圾回收算法串讲
- JVM 常见参数总结
- JVM 调优实战
- JVM(HotSpot)核心源码解读
- JVM 核心模块(GC 算法)手写实战
2、网络调优
- TCP 内核参数
- JAVA API 参数
- IO 模型 TRADE OFF
- 资源隔离优化
- 网卡、CPU 配置调优
- 网络安全的加密算法与数字签名
3、数据库调优
- Mysql 性能监控
- SCHEMA 与数据类型优化
- 通过执行计划优化
- 通过索引进行优化
- 查询优化
- 参数优化
- 分布式 Mysql 优化
- SQL 注入、WebShell 攻击的危险和规避方法
4、LINUX 内核调优
- 单进程最大打开文件数限制
- 内核内存参数调优
- TCP 发送 KEEPALIVE 消息频度
- TCP FIN_WAIT_2 状态时间
- 定义 UDP 和 TCP 链接的本地端口取值范围
- 优化 TCP 接收缓存的最大值、最小值、默认值
- 优化内核套接字接收缓存区默认大小
- 优化内核 TCP 的 SYN 攻击
- 内存溢出、内存泄漏的原因与解决
- 如何高效利用 CPU 缓存
- 内存问题分析与性能优化
- 磁盘 I/O 性能优化
5、中间件底层探索
- Redis6.X 核心源码解读
- Redis6.X 内核编码解读
- String/Hash/List/Set/ZSet 数据结构解读
- Kernel 与 Epoll 多路复用机制底层解读
- LRU 算法解读
- RocketMQ 源码解读
6、容器环境调优
- 镜像体积调优
- 镜像体积最小化
- 构建速度最快化
- 使用 CMD VOLUME 指令对 IMAGE 进行服务化
- DOCKER 网络方案优化
三、关于性能调优你必须知道的几个点
1、性能指标
我们进行性能优化肯定是为了获得更好的性能,那我们怎么去衡量呢?性能指标又是什么呢?一般衡量一个项目(这里指的是网站)的指标有三个:
吞度量:是单位时间内完成的用户或系统的请求数量。
并发数:同时可以去接收多少用户的访问请求。
响应时间:用户发出请求到收到响应的时间间隔。
2、怎么去进行性能分析?
如果我们通过测试发现网站的性能没有达到我们的预期,我们可以通过什么工具去查找到性能瓶颈呢?
① 硬件
- 用 vmstat、sar、iostat 检测是否是 CPU 瓶颈
- 用 free、vmstat 检测是否是内存瓶颈
- 用 iostat 检测是否是磁盘 I/O 瓶颈
- 用 netstat 检测是否是网络带宽瓶
② 操作系统
- 进程
- 文件系统
- SWAP 分区
内核参数调整
③ 应用程序(Mysql 等)
- mysqlreport 性能分析报告
- mysqlsla 慢查询日志分析
3、根据三大法则进行性能优化
查找出问题之后我们可以通过三大法则去进行调优,首先确定调优目标,其次具体化调优步骤,最后检测调优结果。
4、性能调优就是运维工程师的事?
其实在我看来性能优化是一个团队的事情,为什么这么说,比如我们需要在网上做一个商城,大体的流程应该是这样的:
运营提出需求
产品整理需求
开发开发具体的业务应用
运维搭建开发环境
QA 进行项目测试
运维进行项目上线
监控进行项目监控
这么多部门的参与,可能出现在产品,也可能出现在程序上,也可能是运维的环境搭建的有问题。只是参加性能调优的更多的是开发、运维、测试和监控。
四、总结
其实性能调优没有大家想象的那么难,掌握好正确的思路去实施是完全可以做到的,不管是做程序员这一行业,还是其他任何行业,做一件事情之前,首先都是要去缕清思路、做好计划、进行检查,然后再去实施。
需要的朋友可以帮 LZ 进行转发+关注,下方扫码免费领取性能调优PDF手册~
美团面试官:Java 性能调优你会多少?一个问题就把我问的哑口无言,哭了相关推荐
- 上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细
随着互联网的发展,高可靠.高并发以及降本增效,已成为各大公司面临的现实挑战,性能优化需求愈发迫切,大到分布式系统,小到代码块的算法优化,都已经成为你日常工作中必须要面对的事情.对于开发者而言,性能优化 ...
- 面试怕被问“后端优化”问题?看看这套java性能调优手册吧!
对于很多研发人员来说,Java 性能调优都是很头疼的问题. 比如,一个简单的系统就囊括了应用程序.数据库.容器.操作系统.网络等技术,线上一旦出现性能问题,就可能要你协调多方面组件去进行优化.另外,很 ...
- 对着Java性能调优,艿艿也很无奈···
Java性能调优都是老生常谈的问题,特别当"糙快猛"的开发模式大行其道时,随着系统访问量的增加.代码的臃肿,各种性能问题便会层出不穷. 比如,下面这些典型的性能问题,你肯定或多或少 ...
- 最新的阿里内部Java性能调优实战笔记,学完就能用的性能调优方法
年前的一波裁员"背刺",不少人失业,最近翻了不少网站的招聘信息,帮大家看看机会(附几张截图).上个月防疫政策放开,经济逐渐复苏,招聘市场也正在回暖,Java岗机会还是不少,大家多关 ...
- 阿里教科书式Java性能调优笔记
前言 Java由于其简单.面向对象.安全等特点,广泛的应用在各种应用领域,但在很多情况下,Java的运行性能仍有待提高. 优化Java的运行性能已成为当前业界迫切要解决的问题和当前的一个热点.比如你要 ...
- 强推!阿里教科书式Java性能调优笔记,竟让GitHub程序员集体叫好
前言 Java由于其简单.面向对象.安全等特点,广泛的应用在各种应用领域,但在很多情况下,Java的运行性能仍有待提高. 优化Java的运行性能已成为当前业界迫切要解决的问题和当前的一个热点.比如你要 ...
- 为什么对 Java 性能调优最后都像在调 you?
不知道你有没有发现,优化Java,或者任何其他语言的代码性能经常被当做是一种暗黑艺术. 性能分析有种神秘感.画面类似是这样的:一个「黑客」经过多年练就的手艺,能够快速深入了解某个系统,并提出神奇的解决 ...
- 11 个简练的 Java 性能调优技巧
转载自 11 个简练的 Java 性能调优技巧 想要让你的项目一直高性能运作吗?以下有一些技巧你可以拿去消除缓存瓶颈,还有一些其他的性能调优建议. 大多数开发者认为性能优化是一个复杂的话题,它需要大量 ...
- java 性能调优_Java性能调优调查结果(第四部分)
java 性能调优 这是本系列中的最后一篇文章,我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果.如果您尚未阅读第一篇文章,建议您首先阅读以下内 ...
- java 性能调优_Java性能调优调查结果(第三部分)
java 性能调优 这是本系列文章的第三篇,我们将分析2014年10月进行的调查的结果.如果您尚未这样做,我建议从本系列的前两篇文章开始: 问题严重性分析和监视域分析 . 这篇文章着重于故障排除/根本 ...
最新文章
- 父母已身作则,静待花开
- webpack笔记(2)打包src下的html文件
- 为什么Android项目mainactivity中有一个变量R_博客笔记大汇总,Android优化总结篇
- linux搭建宝塔重启mysql_宝塔面板安装 重启等命令linux系统重启
- JAVA——使用Spring Boot Scheduled时注入simple-robot Bot解决方案
- SAP CRM和Cloud for Customer里的Formatted Text控件的比较
- JVM GC调优总结 -Xms -Xmx -Xmn -Xss
- 中英翻译机c语言实验报告引言,课程设计--C语言关键字中英翻译机.doc
- 视频显示边缘空白的真相
- OpenCV阈值处理函数cv::threshold()
- 关于vc++6.0“打开文件“功能问题的解决方法
- 云桌面优缺点_云桌面的缺点分析
- TFT-ST7789 方向调整
- NVIDIA显卡如何显示fps?
- IBM内存三技术:Chipkill、MPX、MM
- Fleck webSocket
- Mars3D开发基础学习:场景特效
- 小米9网络位置服务器,如何查看小米9手机当前的IP地址
- HDU 2197 本源串
- 将系统从机械盘重刷到固态盘“