性能调优面试题

1、JVM 调优的参数可以在哪里设置参数值

war包部署在tomcat中设置:修改TOMCAT_HOME/bin/catalina.sh文件
在这里插入图片描述

jar包部署在启动参数设置:java -Xms512m -Xmx1024m -jar xxxx.jar
在这里插入图片描述
nohup == : 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行
参数
& ==:让命令在后台执行,终端退出后命令仍旧执行。

2、JVM 调优的参数都有哪些?

1、设置堆空间大小
设置堆的初始大小和最大大小,为了防止垃圾收集器在初始大小、最大大小之间收缩堆而产生额外的时间,通常把最大、初始大小设置为相同的值。

-Xms:设置堆的初始化大小
-Xmx:设置堆的最大大小

堆空间设置多少合适?
最大大小的默认值是物理内存的1/4,初始大小是物理内存的1/64
堆太小,可能会频繁的导致年轻代和老年代的垃圾回收,会产生stw,暂停用户线程
堆内存大肯定是好的,存在风险,假如发生了fullgc,它会扫描整个堆空间,暂停用户线程的时间长
设置参考推荐:尽量大,也要考察一下当前计算机其他程序的内存使用情况
2、虚拟机栈的设置
每个线程默认会开启1M的内存,用于存放栈帧、调用参数、局部变量等,但一般256K就够用。通常减少每个线程的堆栈,可以产生更多的线程,但这实际上还受限于操作系统。

-Xss   对每个线程stack大小的调整,-Xss128k

3、 年轻代中Eden区和两个Survivor区的大小比例

设置年轻代中Eden区和两个Survivor区的大小比例。该值如果不设置,则默认比例为8:1:1。通过增大Eden区的大小,来减少YGC发生的次数,但有时我们发现,虽然次数减少了,但Eden区满的时候,由于占用的空间较大,导致释放缓慢,此时STW的时间较长,因此需要按照程序情况去调优。

-XXSurvivorRatio=8,表示年轻代中的分配比率:survivor:eden = 2:8

4、 年轻代晋升老年代阈值

-XX:MaxTenuringThreshold=threshold

默认为15
取值范围0-15
5、设置垃圾回收收集器
通过增大吞吐量提高系统性能,可以通过设置并行垃圾回收收集器。

-XX:+UseParallelGC-XX:+UseParallelOldGC
-XX:+UseG1GC

3、JVM 调优的工具

命令工具
jps 进程状态信息
jstack 查看java进程内线程的堆栈信息
jmap 查看堆转信息,Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中
jhat 堆转储快照分析工具
jstat JVM统计监测工具,可以用来显示垃圾回收信息、类加载信息、新生代统计信息等。

可视化工具
jconsole 用于对jvm的内存,线程,类 的监控
VisualVM 能够监控线程,内存情况

4、Java内存泄露的排查思路

内存泄漏通常是指堆内存,通常是指一些大对象不被回收的情况
1、通过jmap或设置jvm参数获取堆内存快照dump
2、通过工具, VisualVM去分析dump文件,VisualVM可以加载离线的dump文件
3、通过查看堆信息的情况,可以大概定位内存溢出是哪行代码出了问题
4、找到对应的代码,通过阅读上下文的情况,进行修复即可

5、CPU飙高排查方案与思路?

1.使用top命令查看占用cpu的情况
在这里插入图片描述

2.通过top命令查看后,可以查看是哪一个进程占用cpu较高
3.使用ps命令查看进程中的线程信息

ps H -eo pid,tid,%cpu | grep 40940

在这里插入图片描述
4.使用jstack命令查看进程中哪些线程出现了问题,最终定位问题

jstack 40940   此处是进程id

十进制转换为十六进制

printf "%x\n" 40955

在这里插入图片描述

在SQL性能调优面试中,面试官可能会问到一些常见的问题。其中一个常见问题是:现在线上有个SQL执行很慢,你怎么优化?。 另一个可能被问到的问题是:慢SQL语句的几种常见诱因是什么?。 在分析执行计划时,我们可以使用MySQL提供的EXPLAIN关键字。EXPLAIN可以显示查询的执行计划,包括表的读取顺序、使用的索引、连接方式等等。通过仔细分析执行计划,我们可以识别性能瓶颈,并做出相应的优化调整。我们可以关注一些关键的指标,如扫描行数、索引是否被使用、连接类型等等,来判断查询的效率和性能。通过对执行计划的分析,我们可以了解查询的执行路径,找到潜在的性能问题,并进行相应的调整。 总结起来,在SQL性能调优面试中,关键是深入理解数据库的原理和优化方法,能够分析查询的执行计划,找出性能瓶颈,并采取相应的优化措施。同时,还应该注意细节,如合理使用索引、优化查询语句、调整数据库配置等等,以提高查询性能和系统的整体性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SQL优化面试专题](https://blog.csdn.net/Firstlucky77/article/details/125069214)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值