已解决
高频面试题:开发实战问题
来自网友在路上 134834提问 提问时间:2023-09-27 16:18:02阅读次数: 34
最佳答案 问答题库348位专家为你答疑解惑
接口性能优化:接口超时怎么处理
处理步骤:
- 止血:遇到问题先不要着急排查原因,首先进行止血,防止系统全面崩溃,也避免造成更多请求失败。一般的止血方案包括
- 扩容:应用集群扩容、redis扩容、mysql在线扩容、kafka分区扩容等。
- 重启:如果是单台机器出现问题,可以重启故障机器,注意不可以大批量一次性重启,多台机器必须分批次重启。
- 排查定位:要快速定位接口的哪一个环节比较慢,可以使用APM工具快速定位,常见工具:skywalking、pinpoint、cat、zipkin。如果没有接入APM,可以在生产环境安装阿里的Arthas,利用trace命令打印接口内部每一步执行耗时,定位能力比较粗糙,遇到方法调用只能一层一层往下找。
优化方案:
- 数据库慢sql:数据库问题可以基于实际情况按下面这些方法去解决,锁表慢sql可以先kill、explain执行计划分析、没加索引就增加索引、索引失效就优化sql、联表查询尽量小表驱动大表、多表联查就分多次查询、查询字段尽量少不用select *、表数据太大就做分库分表或者使用其他类型数据库如ES。
- 调用第三方接口慢:针对自身RT需求向第三方接口提出降RT要求、集成sentinel或hystrix限流熔断框架防止被对方拖垮、写接口可以考虑异步化、循环操作改为单次批量操作减少IO、缓存查询结果。
- redis慢:是否有rekey、大key。热key:上本地缓存、缓存集群进行自主扩容、异步主动更新缓存、bigkey缓存默认值如null避免穿透。大key:拆分大key,或者采用set结构的sismember等方法判断。
- 消息中间件慢:生产端慢:使用阻塞队列接收、批量发消息。消费端慢:扩分区、增加消费节点、增加消费线程、批量消费批量写库。
- 程序逻辑慢:大数据量循环改线程池、无效数据提前过滤、同步改为异步(如使用CompletableFuture异步非阻塞,并行调用RPC接口).
线上CPU飙高如何处理
处理步骤:
1.止血:同上面一样,扩容和重启,服务器扩容可以考虑机器置换增大CPU和内存、调整jvm参数等。如果可以快速确认是否线上版本发布引起,如果是,立刻暂停发布,回滚版本。
2.排查问题:dump线程运行情况,定位具体代码位置。解决方案:
1.新业务导致:暂停新业务流量。
2.GC导致:优化对象使用、调整jvm参数、更改垃圾回收器。
3.硬件问题:升级硬件设施。
查看全文
99%的人还看了
相似问题
- MeterSphere | 接口测试请求体中,int类型的入参实现动态化变量
- postman设置接口关联这样做,薪资直接涨3k
- 接口自动化中cookies的处理技术
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- 【实战详解】如何快速搭建接口自动化测试框架?Python + Requests
- 一次显著的接口性能优化,从10s优化到0.9s
- 做接口自动化遇到的20个难点,记录下我是如何解决的!
- 全网最全jmeter接口测试/接口自动化测试看这篇文章就够了:跨线程组传递jmeter变量及cookie的处理
- 微信小程序发货信息录入接口 错误上传时间非法,请按照 RFC 3339 格式填写?
- 京东商品详情数据接口【京东API接口开发系列】,监控京东价格走势,接口代码示例,可高并发批量获取
猜你感兴趣
版权申明
本文"高频面试题:开发实战问题":http://eshow365.cn/6-14761-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!