当前位置: 首页 > 后端技术 > Java

美团面试官:你对Java性能调优了解多少?一个问题让我无语哭了

时间:2023-04-01 16:42:14 Java

一、前言什么是性能调优?性能调优其实很好理解。就是优化硬件、操作系统和应用之间的全面协作,最大限度地发挥硬件的极致性能,满足高负载的业务需求。为什么需要性能优化?其实归根结底有两个原因:①:为了获得更好的系统性能②:通过性能调优来满足不断增长的业务需求性能调优其实作用于我们项目的很多阶段,基本的优化项目上线前性能,项目上线后需要持续性能优化,以满足不同时期的业务需求。我有一个朋友,目前在阿里做P7。他认为,在P7的位置上,尤其是在阿里这样体量的公司,必须掌握以下性能调优技巧。之后他给我分享了这么多年精心整理的性能调优笔记。经许可,您现在可以与所有人分享此笔记的完整版本。需要的朋友可以帮LZ转发+关注,点此免费领取!二、六大性能调优技术(JVM调优+网络调优+数据库调优+LINUX内核调优+中间件底层探索+容器环境调优)手绘板(脑图)一、JVM调优JVM调优必备理论知识-GcCOLLECTOR-三色标串扰垃圾回收算法JVM常用参数汇总JVM调优实战JVM(HotSpot)核心源码解读JVM核心模块(GC算法)手写实战二、网络调优TCP内核参数JAVAAPI参数IO模型TRADEOFF资源隔离优化网卡、CPU配置调优网络安全加密算法和数字签名3.数据库调优Mysql性能监控SCHEMA和数据类型优化通过执行计划优化查询优化参数优化分布式Mysql优化SQL注入和WebShell攻击的危害及规避方法4.LINUX内核调优限制单进程最大打开文件数内核内存参数调优TCP发送KEEPALIVE消息频率TCPFIN_WAIT_2状态时间定义UDP和TCP链接本地端口取值范围优化TCP接收的最大值、最小值和默认值buffer优化内核socket接收缓冲区的默认大小优化内核TCPSYN攻击内存溢出、内存泄漏原因及解决方法如何高效使用CPU缓存内存问题分析及性能优化磁盘I/O性能优化5.探究中间件底层Redis6.X核心源码解读Redis6.X内核代码解读String/Hash/List/Set/ZSet数据结构解读Kernel和Epoll复用机制底层解读LRU算法解读RocketMQ源码解读六、容器环境调优,镜像体积调优,镜像体积最小化,构建速度最快,使用CMDVOLUME命令服务IMAGE,DOCKER网络解决方案优化3.性能调优你必须知道的几点1.性能指标我们性能优化肯定是为了获得更好的性能,那么我们如何衡量呢?性能指标是什么?衡量一个项目(这里指的是网站)一般有3个指标:吞噬衡量:单位时间内完成的用户或系统请求数。并发度:可以同时接收多少个用户访问请求。响应时间:用户发送请求和收到响应之间的时间间隔。2、如何进行性能分析?如果我们通过测试发现网站的性能没有达到我们的预期,我们可以使用哪些工具来寻找性能瓶颈呢?①硬件使用vmstat,sar,iostat查看是否是CPU瓶颈使用free,vmstat查看是否是内存瓶颈使用iostat查看是否是磁盘I/O瓶颈使用netstat查看是否是网络带宽瓶颈②操作系统进程文件系统SWAP分区内核参数调整③应用(Mysql等)mysqlreport性能分析报告mysqlsla慢查询日志分析3.根据三大规律进行性能优化找到问题后,我们可以使用执行调整的三个主要规则。首先确定调优目标,然后指定调优步骤,最后查看调优结果。4、性能调优是运维工程师的工作?其实在我看来,性能优化是一个团队的事情。你为什么这么说?比如我们需要搭建一个网上商城,一般的流程应该是这样的:运营提出需求,产品分类需求,开发开发,具体业务应用运维,搭建开发环境QA进行项目测试,运营而维护进行项目上线监控,项目监控涉及那么多部门。这么多部门的参与,可能出现在产品上,也可能出现在程序上,也可能在运维环境的搭建上出现问题。只是参与性能调优的更多的是开发、运维、测试和监控。4.总结其实性能调优并没有大家想象的那么难。完全可以掌握正确的思路并付诸实施。不管是程序员这个行业,还是其他任何行业,在做一件事情之前,首先是理清思路,制定计划,进行考察,然后实施。**需要的朋友可以帮LZ转发+关注,点此免费获取**性能调优PDF手册~