0
点赞
收藏
分享

微信扫一扫

有关java程序接口访问慢的问题排查

梦幻之云 2023-10-20 阅读 34

环境:

nginx+Java应用程序(tomcat)+redis(缓存)+mysql数据库

服务器的迁移是将redis的服务器迁移到另外一个阿里云账号下的另一个可用区内。所以出问题的应用服务器和redis不在同一可用区。

可用区E:Java应用程序(tomcat)、mysql数据库、nginx

可用区H:redis(缓存)

问题:

超级用户在拉取得网络数据量很大,某个接口(getPersonalInfoInNetwork)访问速度太慢,慢的时候需要7.8秒

排查

  1. 因为是pc端出现的问题,所以定位nginx转发pc请求的两台服务器(暂用20,23代替这两台服务器)。
  2. 最开始先是在20去ping redis服务器,发现延迟比较大。这是因为之前做了服务器的迁移,将redis服务器迁移到另一个阿里云的帐号的另一个可用区下。

然后后端将代码修改逻辑,将redis的缓存去掉。

  1. 之后好了一段时间,发现这个接口还是有点卡。这次重新查日志。
  • 首先需要用超级用户访问系统,访问那个接口。打开检查页面,找出view source

  • 然后将这一段参数拿出来。运用23的ip+端口+接口+?(传参)+下面这段参数

有关java程序接口访问慢的问题排查_应用程序

  • 在新的页面访问

http://172.16.*.23:*/ws/user/getPersonalInfoInNetwork?timestamp=1583214795880&campId=****&uid=****&terminal=1&version=-1&kick=true&sign=866cada60b420b6706da72db48bcf0ef


  • 新的页面中打开检查页面,拿出这个页面的sign值

  • 然后到kibana上面查找服务端的日志,利用短语匹配sign值

{"match_phrase":{"message":"a62f6232322949808c13e5168bb48e1e"}}

拿到traceid

  • 然后继续短语匹配traceid,搜找cost或者那个接口名getPersonalInfoInNetwork,看这个Java程序流程哪个地方耗时比较久

  • 可以看出这个不关数据库的事,是应用程序内部接口响应时间过长。这就需要后端人员优化一下代码。
举报

相关推荐

0 条评论