关于java:美团面试官Java-性能调优你会多少一个问题就把我问的哑口无言哭了

4次阅读

共计 1771 个字符,预计需要花费 5 分钟才能阅读完成。

一、前言

什么是性能调优?

性能调优其实很好了解,就是优化硬件、操作系统、利用之间的一个充沛的合作,最大化的施展出硬件的极致性能,来应答高负载的业务需要。

为什么须要性能优化?

其实说到底就是两个起因:

①:为了取得更好的零碎性能

②:通过性能调优来满足一直减少的业务需要

性能调优其实作用于咱们我的项目中的很多阶段,我的项目上线前性能的根本优化,我的项目上线后也是须要继续一直的性能优化来应答不同期间的业务需要。

我有个敌人当初在阿里是 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 手册~

正文完
 0