2016-09-20 8 views
1

私は3人のクライアントを使用しているサービスを持っています。アプリケーションを起動するたびに、最初の呼び出し時にTimeoutExceptionが発生します。春クラウド|フェインハイトリックス|ファーストコールタイムアウト

すべての安定したクライアントが少なくとも1度は起動する必要があります。オンラインで見てみると、問題はfeignやhystrixの内部に遅延ロードがあり、解決策はSpringのデフォルトを上書きする設定クラスを作ることでした。私は下のコードでそれを試しましたが、それはまだ助けていません。私はまだ同じ問題を見る。誰もがこれに対する修正を知っていますか? hystrixコールバックを介してfeignclientを2回呼び出す唯一のソリューションですか?

@FeignClient(value = "SERVICE-NAME", configuration =ServiceFeignConfiguration.class)  

@Configuration 
public class ServiceFeignConfiguration { 

    @Value("${service.feign.connectTimeout:60000}") 
    private int connectTimeout; 

    @Value("${service.feign.readTimeOut:60000}") 
    private int readTimeout; 

    @Bean 
    public Request.Options options() { 
     return new Request.Options(connectTimeout, readTimeout); 
    } 
} 

春クラウド - Brixton.SR4 春ブーツ - 12.04 ドッカー - - 1.12.1 ドッカー - 作曲 - 1.8

1.4.0.RELEASE

これは、すべてのドッキングウィンドウ でUbuntuを使用しています

+0

をコーディングする必要がいけません最初の呼び出しが常にタイムアウトする場所のサンプル。 – spencergibb

+0

いいね、私は今stacktraceを追加します – GSUgambit

+0

私はタイムアウトスタックトレースを見た、私は問題を再現するサンプルプロジェクトを探しています。申し訳ありませんが私は明確ではなかった。 – spencergibb

答えて

3

Hystrixのデフォルトのプロパティが適切でないという解決策が見つかりました。彼らは非常に小さなタイムアウトウィンドウを持っており、要求は常に最初の試行でタイムアウトします。私は、私が見てみたい私の構成サービスで私application.ymlファイルにこれらのプロパティを追加し、今私のすべてのサービスを使用することができていない問題で装うと私は初めてのタイムアウトの周り

hystrix: 
threadpool.default.coreSize: "20" 
threadpool.default.maxQueueSize: "500000" 
threadpool.default.keepAliveTimeMinutes: "2" 
threadpool.default.queueSizeRejectionThreshold: "500000" 
command: 
    default: 
    fallback.isolation.semaphore.maxConcurrentRequests: "20" 
    execution: 
     timeout: 
     enabled: "false" 
     isolation: 
     strategy: "THREAD" 
     thread: 
      timeoutInMilliseconds: "30000" 
+0

を参照してください。Hystrixを使用するポイントが不足しています。後続のシステムのいずれかが存在しない場合や応答しても、要求が重複しないようにする(システム全体を使用不可にする)スロー。タイムアウトを30秒に増やすことで、hystrixが遅いアプリケーションに回路を開放させるのではなく、システム全体をロックする危険性があります(復旧させる)。 – dvtoever

+0

@dvvverシステムはまだ回路をオープンにすることができ、フォールバックなどこれらの設定では、 "これは最初の呼び出しであり、なぜhystrixが失敗するのか"というコードを書く必要はありません。 – GSUgambit

+0

"config service"と言うと、あなたのSpringクラウドプロジェクトの設定サーバーアプリケーションを参照していますか?私も同じ問題に直面しています。私はZuulゲートウェイプロジェクトで同様の設定をしていますが、私の実際のサービスプロジェクトではありません。 Feignクライアントを使用している個々のプロジェクトにこれらの設定を入力する必要がありますか? – Sayantan