リボンのeager-loadモードとサービスコールタイムアウトの構成

序文

本日、マイクロサービスコールを使用すると、サービス間のコールがタイムアウトし、エラーが次のように報告されました。

feign.RetryableException: Read timed out executing POST http://******

また、サービスが初めて正常に開始されたときにエラーを報告し、その後通常のアクセスを再開する人もいます。

解決:

最初に、最初の呼び出しが失敗し、それが正常になります。この問題を解決するには、インスタンス化が必要なクラスを、最初に呼び出すときではなく、事前に作成します。

理由:主な理由は、サービスの開始時にリボンがクライアントロードバランシングを実行するクライアントが初期化されないが、サービスが呼び出されると対応するクライアントが作成されるため、時間のかかる最初の呼び出しには送信だけが含まれないHTTPリクエストの時間には、RibbonClientを作成する時間も含まれるため、作成時間が遅く、設定されているタイムアウト期間が比較的短い場合は、上記のように表示されやすくなります。
構成:

#预加载配置,默认为懒加载
ribbon:
  eager-load:
    enabled: true
    clients: zoo-plus-email

zoo-plus-email:
  ribbon:
    ReadTimeout: 3000
    ConnectTimeout: 3000

パラメータの説明:

ribbon.eager-load.enabled:リボンのスターベーションロードモードを有効にします

ribbon.eager-load.clients:ロードする必要があるサービス名を指定します

以下は、単一サービスの構成接続読み取り時間です。

すべてのサービスを構成するようにリボンを構成します。

ribbon:
  ReadTimeout: 15000
  ConnectTimeout: 60000

 

おすすめ

転載: blog.csdn.net/qq_36850813/article/details/102813927
おすすめ