性能调优之面试官和你

面试官:你自我描述里写了有性能调优经验,具体是做了哪些调优?

你:SQL,Java代码,JVM,Docker之类的。

 

面试官:那你调优的标准是什么?

你:就是看TPS, QPS越大越好,还有最好响应时间不要超过200ms,还有200的接口在高并发的时候出错率要低

 

面试官:你说的TPS和QPS是什么?

你: TPS就是Transaction Per Second, QPS就是Query Per Second

 

面试官:TPS和QPS有什么不一样的,都是一个请求嘛。

你:不一样的,一个请求里也可以有多个Transaction,如果一次请求一个Transaction,那可以认为是一样的。

 

面试官:那你说说你都是怎么解决性能问题的。

你:举个例子,写接口的校验比较多,采用的是抛出异常的方式来返回校验结果,但是异常的捕获,生成异常栈都是很耗资源的,这时候可以在自定义的异常里将writableStackTrace设置为false。

 

面试官:嗯,那你SQL都是怎么优化的?

你:这个要结合实际情况,比如可以一个查询查出来的,有些人却在循环里单独请求数据库N次,我们减少数据库请求,利用缓存的思想,先把数据查出来,然后在循环里处理数据。

但是复杂的查询,有时候也可以按照需要拆分,不是第一时间需要的,可以懒加载。spring data jpa就有这个坑,hibernate里都是lazy默认的,但spring里却是eager的,一个简单的查询可以牵出一堆不需要的数据。

OneToMany: LAZY ManyToOne: EAGER ManyToMany: LAZY OneToOne: EAGER

 

面试官:你这个说的还是java逻辑代码的优化,我问的是SQL的优化?

你:哦,首先跑下SQL看看执行计划,看看有没什么索引失效,全表扫描的问题。

 

面试官:嗯,那你说说java都是怎么优化的?

你:除了上面的异常,逻辑优化,还有就是限制数据量,比如,一个日历拉取的接口,里面的事件有好几千,不可能全返回,而且页面上一天也就显示3个,可以限制到每天三个,点击more再加载当天的,还是一个延迟加载的思路。

 

面试官:嗯,那你docker是怎么优化的?

你:一般不是docker,是优化docker-compose配置文件,一般就是按权重加减一些service的内存和CPU,分片的数量。

 

面试官:嗯,那你JVM是怎么优化的?

你:没优化过。。

 

面试官:你不是在简历上写了吗?

你:就是小调了下,不值一提,调JVM内存大小,jdk8+docker的时候加上参数-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap解决内存限制不起作用的问题。

 

面试官:还行吧,给你补充几个,你说了CPU,内存,其实还有网络吞吐量和磁盘吞吐量,数据库,计算机系统的负载,进程的,线程的,可以用来判断性能问题。

你:对对对

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值