Java线上问题排查系列 |
您所在的位置:网站首页 › harbor接口不稳定 › Java线上问题排查系列 |
原文网址:Java线上问题排查系列--后端接口响应慢的排查方法及解决方案_IT利刃出鞘的博客-CSDN博客 简介说明 本文介绍Java后端接口响应慢的排查的方法以及如何解决。 如何发现接口响应慢了? 一般通过如下方式发现接口响应慢 用户反馈监控系统的报警(例如:SkyWalking)排查方向 后端接口响应慢分以下2种情况: 个别接口响应慢 本文只探讨这情况:排查个别接口响应慢的方法。所有接口响应慢 可能是服务器问题,需要排查网络、CPU使用率、内存使用率、磁盘使用率等。见:Java--线上问题排查--方法/步骤_IT利刃出鞘的博客-CSDN博客技术资料与交流 ==> ►分享靠谱资料:Java真实面试题汇总、精选简历模板、PDF书籍(高清带书签)、精选PPT模板等; ►分享Java实用技术;►帮助优化简历。详见:资料与交流 定位问题的方法法1:链路追踪工具(推荐) 推荐使用SkyWalking。它会展示出每一个与网络有关的耗时,比如:读写数据库、读写Redis、SpringCloud调用、Dubbo调用等。这样就能立马定位是哪次操作耗时了。 同时,SkyWalking可以记录每一个SQL语句,可以帮助定位。 例如:(如箭头所指处,最上边一个是总耗时,下边的线段是单个操作的耗时) 法2:看代码猜问题点 如果没有链路追踪工具,只能猜测是哪个地方出问题了,到代码中去追踪。 猜测方向:响应慢很大可能是操作数据库耗时比较长。 法3:在链路上打印日志(最不推荐) 在相应的链路上打印日志,然后查看日志,看是哪个地方耗时。 解决方案 数据库耗时长 必要字段加索引确定是否索引失效了如果有回表查询,尽量优化为覆盖索引相关网址: SQL/MySQL--索引的优点/缺点/创建索引的原则_IT利刃出鞘的博客-CSDN博客 SQL/MySQL--索引失效--原因/解决方案_IT利刃出鞘的博客-CSDN博客 架构不合理目前很多项目都是微服务了,在拆分微服务时就必须要注意: 关联性很强的服务,尽量将它们放到同一个微服务。 比如:订单微服务和库存微服务。每次访问都要用到的功能,尽量不要作为一个服务,这样每次都要有网络损耗 比如:验证用户的token是否有效。 这个功能基本每个接口都会用到,最好是将其写到公共代码中,直接作为依赖进行打包。用户其他的功能,比如:注册、登录、用户管理等,可以单独写一个微服务。 业务逻辑这个就要具体情况具体分析了。 可以从如下两个方面解决: 写代码要思路清晰,尽量复杂问题简单化,同时考虑效率问题。加强代码评审。代码评审要来真格的,我去过的大厂是这么搞的,很有借鉴意义: 搞一个代码评审平台(类似jira等),让所有人都可以参与到评审将评审的别人的bug数和自己的bug数作为一项绩效考核,但占比尽量小一些 java死锁简介 有三种方法可排查死锁:jps+jstack、jconsole、jvisualvm 法1:jps+jstack 法2:jconsole 法3:jvisualvm 其他网址 数据库死锁一般通过可视化页面查看。比如:druid的页面。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |