java 调优_面试官:Java性能调优你会多少?一个问题就把我问的哑口无言,哭了!...

一、前言

什么是性能调优?

性能调优其实很好理解,就是优化硬件、操作系统、应用之间的一个充分的协作,最大化的发挥出硬件的极致性能,来应对高负载的业务需求。

为什么需要性能优化?

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

①:为了获得更好的系统性能

②:通过性能调优来满足不断增加的业务需求

性能调优其实作用于我们项目中的很多阶段,项目上线前性能的基本优化,项目上线后也是需要持续不断的性能优化来应对不同时期的业务需求。

我有个朋友现在在阿里是P7,他认为在P7这个职位,特别是像阿里这种体量的企业,以下这些性能调优的技术是必须要掌握的,之后给我分享了他自己这么多年精心整理的性能调优笔记。经允许,现在也是可以分享这份笔记的完整版给大家了,需要的朋友帮忙一键三连后,看UP主页即可~!7f5611526c863c0fbbaf99fee0b8c6ff.png

二、六大性能调优技术(JVM调优+网络调优+数据库调优+LINUX内核调优+中间件底层探索+容器环境调优)

手绘板(脑图)d17909d4bdff898462a82391260b38e0.png

1、JVM调优

JVM调优必备理论知识-GC COLLECTOR-三色标记

垃圾回收算法串讲

JVM常见参数总结

JVM调优实战

JVM(HotSpot)核心源码解读

JVM核心模块(GC算法)手写实战a4fd968813faa99d22bbc8f969a4b55b.png

2、网络调优

TCP内核参数

JAVA API参数

IO模型TRADE OFF

资源隔离优化

网卡、CPU配置调优

网络安全的加密算法与数字签名ed15ca342df4823e2d20699a79daa7b9.png

3、数据库调优

Mysql性能监控

SCHEMA与数据类型优化

通过执行计划优化

通过索引进行优化

查询优化

参数优化

分布式Mysql优化

SQL注入、WebShell攻击的危险和规避方法af3ccb6da800292a53cc3795bdd10cb4.png

4、LINUX内核调优

单进程最大打开文件数限制

内核内存参数调优

TCP发送KEEPALIVE消息频度

TCP FIN_WAIT_2状态时间

定义UDP和TCP链接的本地端口取值范围

优化TCP接收缓存的最大值、最小值、默认值

优化内核套接字接收缓存区默认大小

优化内核TCP的SYN攻击

内存溢出、内存泄漏的原因与解决

如何高效利用CPU缓存

内存问题分析与性能优化

磁盘I/O性能优化4c293c2b86f3b207a8faf3b274d041bf.png

5、中间件底层探索

Redis6.X核心源码解读

Redis6.X内核编码解读

String/Hash/List/Set/ZSet数据结构解读

Kernel与Epoll多路复用机制底层解读

LRU算法解读

RocketMQ源码解读2cc28d2804b13d29ece5ce3c32d0c595.png

6、容器环境调优

镜像体积调优

镜像体积最小化

构建速度最快化

使用CMD VOLUME指令对IMAGE进行服务化

DOCKER网络方案优化

三、关于性能调优你必须知道的几个点

1、性能指标

我们进行性能优化肯定是为了获得更好的性能,那我们怎么去衡量呢?性能指标又是什么呢?一般衡量一个项目(这里指的是网站)的指标有三个:吞度量:是单位时间内完成的用户或系统的请求数量。

并发数:同时可以去接收多少用户的访问请求。

响应时间:用户发出请求到收到响应的时间间隔。e1b90dec27c57ea4152de6c94483939e.png

2、怎么去进行性能分析?

如果我们通过测试发现网站的性能没有达到我们的预期,我们可以通过什么工具去查找到性能瓶颈呢?

① 硬件

用vmstat、sar、iostat检测是否是CPU瓶颈

用free、vmstat检测是否是内存瓶颈

用iostat检测是否是磁盘I/O瓶颈

用netstat检测是否是网络带宽瓶

② 操作系统

进程

文件系统

SWAP分区

内核参数调整

③ 应用程序(Mysql等)

mysqlreport性能分析报告

mysqlsla慢查询日志分析

3、根据三大法则进行性能优化

查找出问题之后我们可以通过三大法则去进行调优,首先确定调优目标,其次具体化调优步骤,最后检测调优结果。d3ef0e319969b91b7b4e2d5ab820d3bf.png

4、性能调优就是运维工程师的事?

其实在我看来性能优化是一个团队的事情,为什么这么说,比如我们需要在网上做一个商城,大体的流程应该是这样的:运营提出需求

产品整理需求

开发开发具体的业务应用

运维搭建开发环境

QA进行项目测试

运维进行项目上线

监控进行项目监控

这么多部门的参与,可能出现在产品,也可能出现在程序上,也可能是运维的环境搭建的有问题。只是参加性能调优的更多的是开发、运维、测试和监控。99d9a7099f4131bdac2cbf326a5a6d44.png

四、总结

其实性能调优没有大家想象的那么难,掌握好正确的思路去实施是完全可以做到的,不管是做程序员这一行业,还是其他任何行业,做一件事情之前,首先都是要去缕清思路、做好计划、进行检查,然后再去实施。

如果你需要文章中的完整版学习笔记可以帮忙素质三连后,看UP主页即可!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里巴巴Java性能调优华山版是一套系统性能调优教程,!通过这份笔记的学习,你将一个系统的调优头脑和策略!快了何止100%?需要的朋友可下载试试! 众所周知性能调优可以使系统稳定,用户体验更佳,甚至在比较大的系统中,还能帮公司节约资源。 但是在项目的开始阶段,没有必要过早地介入性能优化,只需在编码的时候保证其优秀、高效,以及良好的程序设计。 在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次详解 Java 应用服务的每一层优化实战: 模块一,概述。 模块二,Java 编程性能调优。 模块三,多线程性能调优。 模块四,JVM 性能监测及调优。 模块五,设计模式调优。 模块六,数据库性能调优。 模块七,实战演练场。 性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式的性能评测与优化 If / switch 性能评测 switch 性能优化 JVM 性能优化 MySQL性能优化的 50+ 小技巧 Redis 性能优化的 13 个小技巧 . . . 每篇文章图文并茂,附有源码 + 性能评测结果 + 优化方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值