コンテンツにスキップ

プラクティス@Envoy

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. dial tcp lookup timeoutを解決する

dial tcp lookup timeoutとは

EnvoyがCoreDNSとの通信に失敗している可能性がある。


解決方法

以下が原因である可能性がある。

  • CoreDNSが停止している。
  • CoreDNSへのリクエスト経路のネットワークパフォーマンスが低い

これらを解決する。


02. upstream request timeoutを解決する

upstream request timeoutとは

504ステータスである。

Envoyからアップストリーム (アップストリーム) への送信処理エラーである。

Envoyからのリクエスト処理が、リスナーからルートへのタイムアウト時間を超過し、アップストリームにリクエストを送信できなかったことを表している。

アウトバウンド通信またはインバウンド通信の違いで、アップストリームに当たる箇所が異なる。


アップストリームに当たる箇所

▼ Envoyからのアウトバウンド通信の場合

Envoyからのアウトバウンド通信の場合、Envoyのアップストリームは他のEnvoyや外部システムである。

Envoyから他のEnvoyや外部システムへのリクエストでタイムアウトになっている。

マイクロサービス # ダウンストリーム

Envoy

... # アップストリーム

envoy_upstream-request-timeout_outbound

▼ Envoyへのインバウンド通信の場合

Envoyへのインバウンド通信の場合、Envoyのアップストリームはマイクロサービスである。

Envoyからマイクロサービスへのリクエストがタイムアウトになっている。

... # ダウンストリーム

Envoy
⬇︎
マイクロサービス # アップストリーム

envoy_upstream-request-timeout_inbound


解決方法

以下が原因である可能性がある。

  • アップストリーム (アウトバウンド通信の場合はEnvoy、インバウンド通信の場合はマイクロサービス) がハードウェアリソース不足や高負荷状態にあり、処理し切れなかった
  • タイムアウト時間が短すぎる
  • ネットワークに問題がある。
  • 処理に時間がかかりすぎている。

これらを解決する。


03. upstream response timeoutを解決する

upstream response timeoutとは

504ステータスである。

Envoyからアップストリームへの送信処理エラーである。

しかし、アップストリームからのレスポンス処理がタイムアウト時間を超過し、Envoyがアップストリームからレスポンスを受信できなかったことを表している。

アウトバウンド通信またはインバウンド通信の違いで、いずれが原因かが異なる。


アップストリームに当たる箇所

▼ Envoyからのアウトバウンド通信の場合

アウトバウンド通信の場合、Envoyのアップストリームは他のEnvoyや外部システムがである。

他のEnvoyや外部システムからのレスポンス処理がタイムアウトになっている。

マイクロサービス # ダウンストリーム

Envoy

... # アップストリーム

▼ Envoyへのインバウンド通信の場合

インバウンド通信の場合、Envoyのアップストリームはマイクロサービスである。

マイクロサービスからのレスポンス処理がタイムアウトになっている。

... # ダウンストリーム

Envoy
⬇︎
マイクロサービス # アップストリーム


解決方法

以下が原因である可能性がある。

  • アップストリーム (アウトバウンド通信の場合はEnvoy、インバウンド通信の場合はマイクロサービス) がハードウェアリソース不足や高負荷状態にあり、処理し切れなかった
  • タイムアウト時間が短すぎる
  • ネットワークに問題がある。
  • 処理に時間がかかりすぎている。

これらを解決する。


04. downstream_remote_disconnectを解決する

downstream_remote_disconnectとは

504ステータスである。

Envoyのダウンストリームの返信処理エラーである。


ダウンストリームに当たる箇所

▼ Envoyからのアウトバウンド通信の場合

Envoyからのアウトバウンド通信の場合、Envoyのダウンストリームはマイクロサービスである。

マイクロサービス # ダウンストリーム

Envoy

... # アップストリーム

マイクロサービスからのリクエストがタイムアウトになっている。

マイクロサービスからDBへのトランザクションで問題が起こると、Envoyでdownstream_remote_disconnectが出ることがある。

▼ Envoyへのインバウンド通信の場合

Envoyへのインバウンド通信の場合、EnvoyのダウンストリームはブラウザやEnvoyである。

... # ダウンストリーム

Envoy
⬇︎
マイクロサービス # アップストリーム

ブラウザやEnvoyからのリクエストがタイムアウトになっている。


解決方法

以下が原因である可能性がある。

  • ダウンストリーム (アウトバウンド通信の場合はマイクロサービス、インバウンド通信の場合はブラウザやEnvoy) が通信を切断した。
  • タイムアウト時間が短すぎる
  • ネットワークに問題がある。

これらを解決する。