快2023年了,还不会性能调优?阿里技术官亲授“Java性能调优技术宝典”看完直接涨薪5K

news2024/11/28 14:51:36

一、前言

什么是性能调优?

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

为什么需要性能优化?

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

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

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

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

我有个朋友现在在阿里是P7,他认为在P7这个职位,特别是像阿里这种体量的企业,以下这些性能调优的技术是必须要掌握的,之后给我分享了他自己这么多年精心整理的性能调优笔记。

经允许,现在也是可以分享这份笔记的完整版给大家了,需要的朋友可以前往文末获取!

二、六大性能调优技术(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进行项目测试

  • 运维进行项目上线

  • 监控进行项目监控

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

四、总结

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

如果你需要文章中的完整版学习笔记可以点击下方的名片自取!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年湖北安全员ABC三类人员延期多久一次?甘建二

2023年湖北安全员ABC三类人员延期多久一次? 2023年湖北安全员ABC延期快来找甘建二报名,建设厅指定的 2023年湖北安全员ABC新办快来找甘建二报名,建设厅指定的 首先安全员分为三类:A证、B证、C证,每个证书都有相应的…

Spring源码解析-环境变量(下)

“不积跬步,无以至千里”。 接着聊上一篇文章中遗留的两个重要问题: 如何往Spring环境变量中添加自定义的环境变量?工作原理是什么?PropertyPlaceholderConfigurer这个类是怎么完成bean属性填充时“$”符号解析工作的&#xff1f…

数据库系统概论第2章 关系数据库

易错点1:实体完整性 实体完整性要求主属性不能取空值 而主属性不能取空值≠候选码不为空 因为候选码可以是两个属性的组合,而主属性是候选码的属性 举个例子: SC表中候选码为(学号,课程号) 主属性为学…

fetch向后端请求数据:get/post/put/patch/delete方式、解决catch不能主动捕获错误问题(超详细笔记)

1、什么是fetch: fetch是ES6出现的,它使用了 ES6 提出的 promise 对象,为了取代XMLHttpRequest而诞生的;提到XMLHttpRequest就不得不提ajax,ajax是一种实现前后端交互的技术,而ajax是基于XMLHttpRequest模块…

C++ Reference: Standard C++ Library reference: Containers: map: map: count

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/count/ 公有成员函数 <map> std::map::count size_type count (const key_type& k) const;计数具有特定键的元素 在容器中搜索键值等于k的元素&#xff0c;并返回匹配的数量。 因为map容器中的所…

搞懂商业智能 BI 、数据仓库、数据中台及其关系,此文足以

数字化如火如荼&#xff0c;企业的 IT 信息化也越演越烈&#xff0c;企业管理者对数据管理也是越来越重视&#xff0c;认识到数据资产带来的价值&#xff0c;本文对这些名词术语及内涵进行系统的解析&#xff0c;便于读者对数据平台相关的概念有全面的认识。 商业智能BI 商业…

本文分享Unity中的AI算法和实现3-有限状态机FSM(下)

本文分享Unity中的AI算法和实现3-有限状态机FSM(下) 回家生孩子, 暂停了一个多月的更新, 今天重新续上, ^_^. 在上一篇文章中, 我们分享了状态机的基本理论, 然后结合Unity的Animator来熟悉了这些理论, 最后设计了我们自己的状态机并实现了框架部分. 这一篇文章, 我们将继续…

20221212 SpringCloud Alibaba

Spring Cloud Alibaba介绍主要功能组件注册中心脚手架创建实例使用RestTemplate实现微服务调用使用openfeign实现微服务调用负载均衡的使用创建多实例修改负载均衡Spring Cloud Alibaba 介绍 官方文档&#xff1a; https://spring.io/projects/spring-cloud-alibaba https://…

git stash 命令详解

1. 应用场景 2. 添加储藏 3. 查看储藏 4. 删除储藏 5. 使用储藏 6. 常见用法 1. 应用场景 git stash 命令用于将工作区中的更改和暂存区中的内容储存起来 日常开发中&#xff0c;会经常遇到这种场景 我们正在 dev 分支开发新功能&#xff0c;做到一半时&#xff0c;产品经理…

模块化、组件化和插件化

模块化&#xff1a;业务解耦、代码重用 组件化&#xff1a;模块化为基础、开发阶段每个moudle都是一个app &#xff0c;可以单独编译,并行开发 互不干扰&#xff0c;不用编译整个工程&#xff0c;打包的时候每个moudle又是moudle 不是app 只有一个app 插件化&#xff1a;也是…

【愚公系列】2022年12月 Elasticsearch数据库-ELK环境的搭建(一)

文章目录前言一、ELK环境的搭建1.前提条件2.启动Elasticsearch3.配置可视化工具 head-master3.配置kibana前言 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级…

大学生可以在校搞搞副业吗?尝试做外卖跑腿项目有没有市场?

随着大学寒假的即将到来&#xff0c;40多天的假期&#xff0c;为什么大学生不利用这个机会去想明年的校园生活该如何度过&#xff0c;想要自己的校园生活过得精彩&#xff0c;就给自己找一个副业吧&#xff01; 副业&#xff01;这两个词应该是针对工作的&#xff0c;而不是针…

MapReduce 编程实例:词频统计

文章目录MapReduce 编程实例&#xff1a;词频统计一&#xff0c;准备数据文件&#xff08;1&#xff09;在虚拟机上创建文本文件&#xff08;2&#xff09;上传文件到HDFS指定目录二&#xff0c;使用IDEA创建Maven项目三&#xff0c;添加相关依赖四&#xff0c;创建日志属性文件…

【AI with ML】第 3 章 :超越基础知识:检测图像中的特征

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

树上操作【点分治】 - 原理 中心分解 【POJ No. 1741】 树上两点之间的路径数 Tree

树上操作【点分治】 - 原理 中心分解 分治法指将规模较大的问题分解为规模较小的子问题&#xff0c;解决各个子问题后合并得到原问题的答案。树上的分治算法分为点分治和边分治。 点分治经常用于带权树上的路径统计&#xff0c;本质上是一种带优化的暴力算法&#xff0c;并融…

【内网安全-基础】基础知识、信息收集、工具

目录 一、基础知识 1、内网&#xff1a; 2、工作组&#xff1a; 3、域(Domain)&#xff1a; 二、基础信息收集 1、判断是否在域内 2、机器角色判断 3、出网协议判断 4、端口判断 三、常规信息收集 1、常用命令 2、常用命令 3、工具&插件 LadonGO CS插件 Adfi…

基于Java(Spring+Struts+Hibernate 框架)实现(Web)学生课程管理系统【100010038】

课程管理系统设计文档 二、引言 2.1 目的 ​ 本文档详细描述了课程管理系统的设计&#xff0c;达到引导开发的作用&#xff0c;同时实现测试人员以及用户的沟通。 ​ 本文档面向开发人员&#xff0c;测试人员以及最终用户编写&#xff0c;是了解系统的导航。 2.2 范围 ​…

Win10系统电脑连接打印机的操作方法教学

Win10系统电脑连接打印机的操作方法教学分享&#xff0c;很多用户在办公的时候都会需要使用到打印机。用用户自己购买了打印机之后&#xff0c;不懂怎么去连接自己的电脑来进行使用的方法&#xff0c;接下来我们一起来看看Win10系统电脑连接打印机的操作方法分享吧。 Win10连接…

2022职场人状态和顺风出行感受调研报告

2022年即将过去&#xff0c;作为职场人的你会如何总结&#xff1f;职场同路人又有哪些想对彼此说的话&#xff1f;近日&#xff0c;嘀嗒出行发布《2022职场人状态和顺风出行感受调研报告》&#xff0c;基于近8000名嘀嗒顺风车车主和乘客分享各自职场经历和顺风出行感受&#xf…

运维人必须掌握的 5 种常用运维监控工具

运维监控工具千千万&#xff0c;仅开源的解决方案就有流量监控&#xff08;MRTG、Cacti、SmokePing、Graphite 等&#xff09;和性能告警&#xff08;Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等&#xff09;可供选择。 并且每种软件都有自己的特点和功能&#xff0c;各…