APISIXにおけるレイテンシの理解と管理:包括的な技術ガイド
December 29, 2023
ユーザーからよく寄せられる質問の1つに、APISIXにおけるレイテンシの正確な測定方法があります。APISIXを使用する際、異常に高いレイテンシにどのように対処すべきでしょうか?
実際、レイテンシの測定に関する議論は、APIリクエストのパフォーマンスと応答時間に焦点を当てています。これらの側面を理解することは、特にB2Bソフトウェアにおいて、クライアントが高いAPIの可用性とパフォーマンスを要求する場合に、効率的なAPIサービスを確保するために重要です。金融市場における株式取引ソフトウェアのような敏感なシナリオでは、レイテンシがトレーダーに大きな影響を与える可能性があります。
では、レイテンシとは何か、そしてAPISIXにおけるレイテンシとは何でしょうか?APISIXにおけるレイテンシとは、クライアントがAPIリクエストを送信してからレスポンスを受け取るまでの全プロセスにかかる時間を指します。この遅延は、クライアントのネットワークレイテンシ、APISIX内部の処理時間、および上流サービスとの相互作用のレイテンシなどの要因で構成されます。
これらのレイテンシをよりよく理解し測定するために、いくつかの主要なコンポーネントに分類することができます。
-
クライアントからAPISIXまでのネットワークレイテンシ: これは、クライアントからAPISIXまでのリクエストの伝送時間を測定し、クライアントとAPISIXの間の距離やネットワークの混雑などの要因に影響されます。この時間を測定するために専用のツールを使用することができます。
-
APISIX内部の処理時間: これは、APISIXが内部でさまざまな操作を実行するのにかかる時間を含みます。これには、ルーティングの決定、認証、認可、およびプラグインを通じて実装されたカスタムロジックが含まれます。
-
上流サービスとの相互作用のレイテンシ: APISIXが上流サービス(通常はバックエンドアプリケーションやマイクロサービス)と通信する場合、この相互作用にかかる時間が全体のレイテンシに含まれます。これには、APISIXから上流サービスへのリクエストの伝送時間と、レスポンスが返ってくるまでの時間が含まれます。
APISIXのレイテンシは、次の式で計算できます: APISIXレイテンシ = 総レイテンシ - 上流相互作用レイテンシ。総レイテンシはリクエストを送信してからレスポンスを受け取るまでの時間を表し、上流相互作用レイテンシはAPISIXと上流サービスとの通信時間に焦点を当てています。
注: Linuxでは、
upstream_response_time
はclock_gettime
(CLOCK_MONOTONIC_COARSE
)を使用してカウントされ、CONFIG_HZ=250
の典型的な値では最大4ミリ秒になることがあります。同時に、request_time
を計算する時間は単調な時間ではなく、gettimeofday()
の結果であり、壁時計に従った時間です。そのため、場合によってはupstream_response_time
がrequest_time
よりもわずかに大きくなる可能性があります。さらに、弱いネットワーク環境や大きなファイルのアップロード/ダウンロードが関わるシナリオでは、クライアントとゲートウェイの間のレイテンシが
apisix_latency
に追加されることがあります。具体的な問題はケースバイケースで分析してください。
APISIXのレイテンシは次の3つのタイプに分類できます:
-
ダウンストリームレイテンシ: APISIXとクライアントの間のネットワーク伝送レイテンシやリクエストボディの読み取りなどの操作を含みます。モニタリングと分析により、通信パフォーマンスの洞察を得て最適化することができます。
-
NGINXレイテンシ: APISIXはリクエストの処理とルーティングにNGINXを使用しているため、NGINXの内部実行時間が全体のレイテンシに影響を与えます。専用のツールを使用してモニタリングすることができます。
-
Luaプラグインコードの実行レイテンシ: APISIXには多数のLuaプラグインがあり、各プラグインの実行時間が重要な要素となります。分析には専用のツールが必要です。
レイテンシの問題を解決するためには、特定されたレイテンシのコンポーネントに基づいて体系的な分析を行うことができます。解決策には、ネットワークアーキテクチャの最適化、クライアントのネットワークレイテンシに対するCDNの活用、APISIX内の問題のあるLuaコードの特定、および上流サービスとの相互作用における潜在的な問題の調査が含まれます。継続的なモニタリングと分析により、潜在的な問題をタイムリーに検出し解決することができ、エンドクライアントの要件を満たすためにAPIサービスをよりよく最適化することができます。
APISIXのレイテンシを理解し管理することは、最適なAPIパフォーマンスを確保するために不可欠です。各コンポーネントの徹底的な分析、継続的なモニタリング、そして戦略的な最適化を通じて、APIサービスを強化し、可用性と応答性を向上させ、エンドユーザーのニーズに効果的に対応することができます。
APISIXと他のゲートウェイ製品のQPSとレイテンシの比較データについては、"Why Is Apache APISIX the Best API Gateway?"を参照してください。