• 解决Spring Cloud中Feign第一次请求失败的问题


    在Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题

    com.netflix.hystrix.exception.HystrixTimeoutException: null
    at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$1.run(AbstractCommand.java:1142) ~[hystrix-core-1.5.18.jar:1.5.18]
    at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:41) ~[hystrix-core-1.5.18.jar:1.5.18]
    at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:37) ~[hystrix-core-1.5.18.jar:1.5.18]
    at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable.run(HystrixContextRunnable.java:57) ~[hystrix-core-1.5.18.jar:1.5.18]
    at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$2.tick(AbstractCommand.java:1159) [hystrix-core-1.5.18.jar:1.5.18]
    at com.netflix.hystrix.util.HystrixTimer$1.run(HystrixTimer.java:99) [hystrix-core-1.5.18.jar:1.5.18]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_131]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_131]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_131]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

    产生的原因:

      Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback

      第一次请求往往会比较慢,响应时间可能会大于1秒

    解决的方法有3种:

      (1)Hystrix的超时时间设置为5秒

    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000

      (2)禁用Hystrix的超时时间

    hystrix.command.default.execution.timeout.enabled

      (3)禁用feign的hystrix

    feign.hystrix.enabled=false

     

  • 相关阅读:
    PbootCMS二开指南
    vue$refs的用法【详解】
    安全加解密引擎基础(PKE DSA)
    安全加解密引擎基础(SKE AES)
    安全加解密引擎基础(PKE ECC/ECDH/ECDSA)
    安全加解密引擎基础(PKE SM2)
    GitLab权限设置、分支保护、Issue/Merge Request模板
    安全加解密引擎基础
    安全加解密引擎基础(SKE SM4)
    安全加解密引擎基础(SKE DES/3DES)
  • 原文地址:https://www.cnblogs.com/baby123/p/12008600.html
Copyright © 2020-2023  润新知