Fegin在同一服务器不同服务间调用时间超时,通信时间太长问题!!!

Blade 未结 1 89
med
med 剑圣 2022-06-10 18:04

一、该问题的重现步骤是什么?

  1. 以下为接口返回实体List时间对比

    a、本服务内调用

    06dcf204ee140119c1a80eabafb4f43.png

    b、同一服务器跨服务调用

  2. 5a1c22a308f397caac32723d9a6ecdd.png

2.以下为接口返回Json字符串调用时长对比

a、本服务内调用

15d471f76a5f615cbd6e005164c7fc4.png

aa、同意服务器跨服务调用

ba4e857bc79adb6516341a303b4d536.png

3.


二、你期待的结果是什么?实际看到的又是什么?

期待传输时间控制在500ms以内

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

2.9.1;windows10

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 2022-06-10 18:41

    一、如果你不是首次时间长而是每次时间都长的话,这个问题可以从以下的几个点去筛选排查

     1. 新建专门测试的接口,内部没有sql调用等业务逻辑,就看调用返回所需时间是多少,调用十次都记录下来

     2. 因为feign底层是http调用,那也可以把feign调用改成HttpUtil的调用,查看用HttpUtil后,测试接口返回所需时间是多少,调用十次都记录下来

     3. 调用同一个测试接口,如果第1种方法,平均调用时间都很长,而第2种方法平均时长都很低,那就有可能与feign本身有关。如果两种方法平均时长都很长,那就与feign无关,需要排查其他地方。

     


    二、如果确认是feign的问题,那么就需要对feign的内部结构进行改造排查

     1. 到bladex-tool内找到blade-core-cloud包,把和feign相关的封装列一下,然后逐个删除,再执行install,然后测试feign调用时间

     2. 把一些额外配置删除,逐步到原生的feign,就可以找到是哪一块配置的问题,具体截图如下,后续找到相关问题可以继续完善帖子,或者给我们发邮件:bladejava@qq.com

    image.png


    三、不过我感觉应该不是feign本身的问题,因为我们部署的时候,只有首次feign调用,创建缓存的时候会时间长一点,之后调用都是很快的

    0 讨论(0)
提交回复