レイテンシとは何ですか?APIのためのネットワーク遅延の説明
Scrapeless Scraping Browserは、JavaScriptでレンダリングされた公的ウェブページからデータを収集するための管理されたクラウドブラウザセッションを提供します。
TL;DR
- レイテンシは遅延を測定します。 データや作業が開始イベントから観察された結果に移動するのにかかる時間を説明します。
- 往復時間は一般的ですが、普遍的ではありません。 片道遅延、最初のバイトまでの時間、入力遅延、エンドツーエンドの作業時間は異なる質問に答えます。
- 帯域幅とレイテンシは独立した次元です。 高容量の経路でも長い伝播や処理遅延がある可能性があります。
- リクエストは層を越えて遅延を蓄積します。 DNS、接続設定、セキュリティ交渉、ネットワークトランジット、サーバキュー、計算、転送、レンダリングがすべて寄与します。
- 良い最適化は内訳から始まります。 キャッシング、接続の再利用、地域的配置、またはペイロード削減を選ぶ前に、名前付きのフェーズを測定します。
レイテンシは待機に費やされた時間です。
レイテンシは、開始イベントと対応する結果の間の遅延です。ネットワークでは、この用語はパケットが一方向に移動するのにかかる時間、またはメッセージとその確認のための往復時間を指すことがあります。APIでは、ユーザーはエンドツーエンドの応答時間を重視することが多いです。ブラウザでは、認識されたレイテンシはドキュメント解析、スクリプト作業、レイアウト、表示を通じてさらに延びます。したがって、有用なレイテンシ声明は開始イベントと終了イベントの両方を名付けます。
物理的距離は、信号が光ファイバー、銅線、無線リンク、ルータ、そして中間システムを通じて伝播するのに時間がかかるため、ネットワーク遅延の下限を設けます。Appleのアーカイブされた レイテンシのネットワーク説明は それを往復時間として定義し、距離が過負荷なしでも寄与することに注意しています。実際のシステムは、その基盤の上に直列化、キューイング、プロトコル、処理、そしてスケジューリングの遅延を追加します。
1つのリクエストのレイテンシ予算
レイテンシとは何かの有用なモデルは、開始イベントから始まり、返された結果までの作業を追います。その経路を分割することで、一つの遅いまたは失敗したステージが別のステージに責任を負わせるのを防ぎます。
名前解決と接続設定
クライアントはホスト名を解決し、アドレスを選択し、トランスポート状態を確立し、アプリケーションリクエストを送信する前に暗号化を交渉することがあります。キャッシュされたDNSの回答や再利用された接続はこれらのフェーズの一部を削除できますが、コールド接続はそれらを露呈します。
トランジットとキューイング
パケットはリンクや転送デバイスを横切ります。伝播は距離と媒体を反映し、直列化はリンク速度とパケットサイズを反映し、キューイングは競合するトラフィックを反映します。キューイングは最も変動のある要素であり、経路が負荷されたときに急激に増加する可能性があります。
サーバーとクライアントの作業
受信サービスは認証、検証、データの読み取り、アプリケーションロジックの実行、および応答の直列化を行います。その後、クライアントはそれを解析、変換し、レンダリングすることがあります。高速なネットワークは長いデータベースクエリを補うことはできず、高速なサーバーは遠い往復を消すことはできません。
レイテンシメトリクスは異なる質問に答えます。
比較は行が同じ層を説明する場合にのみ有用です。この表はレイテンシとは何かを、混乱しやすい概念の隣に配置します。
| 概念 | 意味 | 実際の信号 |
|---|---|---|
| 片道遅延 | 送信者イベントから受信者イベントへの時間。 | 同期した時計と方向性分析。 |
| 往復時間 | メッセージが送信され、応答が返されるのにかかる時間。 | 経路の健全性、距離、対話型プロトコル。 |
| 最初のバイトまでの時間 | リクエスト開始から応答バイトが始まるまでの時間。 | 接続、サーバー処理、および初期トランジット。 |
| ダウンロード期間 | 最初の応答バイトから最後のバイトまでの時間。 | ペイロードサイズ、混雑、及び利用可能なスループット。 |
| エンドツーエンドの作業時間 | ユーザーのアクションから使える出力までの時間。 | クライアント作業を含む完全な製品体験。 |
レイテンシがシステムの動作を変更する場所
レイテンシとは何かのユースケースは、スケールとオーディエンスにおいて異なりますが、各ユースケースは特定の契約またはパフォーマンス特性に依存します。このカードは、その依存関係を示しています。
インタラクティブインターフェース
小さな繰り返しの遅延は、タイピング、検索の提案、ナビゲーション、依存するリクエストを持つ任意のワークフローに影響を与えます。
分散API
サービス間の呼び出しは、一つのリクエストが下流の操作の連鎖を待つときに遅延を増幅することがあります。
データ収集
ナビゲーション、レンダリング、抽出、ストレージはそれぞれ時間を追加するため、フェーズレベルの測定が実際の制約を特定します。
リアルタイム制御
音声、ゲーム、産業制御、共同作業ツールは、平均的な遅延だけでなく変動にも敏感です。
信号を混合せずにレイテンシを測定する方法
まず時計の境界を定義します。pingのような往復は、アプリケーション処理を含みません。最初のバイトまでの時間は、リクエストパスの多くを含みますが、完全な本文は含みません。ブラウザの完了は、APIモニターが持たないクライアント実行を含みます。メトリック名、パーセンタイル、場所、プロトコル、接続状態、観測ウィンドウを報告して、他の人が解釈できるようにします。
1つの平均ではなく分布を使用します。中央値のレイテンシは典型的な観察を説明し、一方で上位パーセンタイルはキューイング、コールドパス、共有リソースの競合を明らかにします。失敗した操作とキャンセルされた操作は別々に記録します。なぜなら、これらをドロップすると、システムが感じるよりも速く見えることがあるからです。同じを比較します:温かい接続を温かい接続と、同等のペイロードと、同じユーザー地域を比較します。
決定にマッピングされる境界を装備します。その W3Cナビゲーションタイミング仕様が ブラウザのナビゲーションフェーズのタイミング属性を定義します。サーバートレースは、キュー時間をアプリケーション作業から分離することができ、クライアントスパンはパースとレンダリングを隔離できます。目標は、実行可能なエントリを持つレイテンシ予算であり、無関係なタイマーで満たされたダッシュボードではありません。
エンジニアリング時間を無駄にするレイテンシの誤読
- すべての遅い結果をネットワークの問題とすること。 サーバーキュー、データベース作業、ブラウザスクリプト、ストレージは、観測された遅延を支配することがあります。
- 平均だけを最適化すること。 安定した中央値は、有意なシェアのリクエストによって経験される痛みのあるテールを隠すことがあります。
- 依存関係の深さを無視する。 いくつかの連続した呼び出しはそれぞれの待機時間を加え、並列呼び出しは通常最も遅いブランチ近くで完了します。
- 異なるペイロードを比較すること。 大きなレスポンスは、転送とパースにより多くの時間を要し、初期のレイテンシの変化と誤解されることがあります。
- 一つの地域からテストする。 物理的距離と相互接続パスにより、地理的配置が結果の一部となります。
Webデータパイプラインでのレイテンシの削減
不必要な連続境界を取り除きます。二つの独立したリソースが必要な場合は、責任ある限界内で同時に取得します。同じ安定したリソースが繰り返し必要な場合は、キャッシュが許可されているときは再利用します。プロトコルとサービスが許可する場所では接続を開いたままにし、地理が主要な要素である場合はデータソースまたはユーザーの近くで計算を行います。
ページの動作によって取得方法を選択します。直接の構造化された応答は、ブラウザの起動とレンダリングを回避できます。ブラウザセッションは、ページがJavaScript、インタラクション、またはセッションステートに依存している場合に適しています。一度ブラウザが必要になると、依存するステップを同じセッション内に保持することで、繰り返しのセットアップがレイテンシ予算の最大の行にならないようにします。
最初のバイト後にペイロード作業を減らします。APIが選択をサポートする場合は必要なフィールドのみをリクエストし、テキスト形式を圧縮し、無関係なアセットのダウンロードを停止し、実用的な場合はインクリメンタルにパースし、繰り返し変換なしで正規化された出力を書きます。これらの変更は、往復時間が短縮できない場合でも、完了時間を改善します。
レイテンシとは何かレビューチェックリスト
これらのチェックを使用して、レイテンシとは何かの定義を実装の証拠に変え、開発者、オペレーター、またはレビュアーが再現できるようにします。
- 境界を再定義します。 レイテンシとは何かのために、呼出し元、プロバイダー、パス、および完全な結果を示す正確なイベントを特定します。
- 中心的な主張を確認します。 この声明を実装とその文書で確認してください:レイテンシは遅延を測定します。データまたは作業が開始イベントから観測結果に移動するのにかかる時間を説明します。
- メカニクスを追跡します。 名前解決と接続セットアップ、輸送とキューイング、サーバーとクライアント作業を観察し、各ステージを所有するコンポーネントを記録します。
- 最も近い区別をチェックします。 このシステムで、“片方向の遅延は「送信者のイベントから受信者のイベントまでの時間」を意味します”という理由を文書化します。
- 代表的なユースケースをテストします。 リアルなデータ、場所、ボリューム、権限の境界を使用してインタラクティブなインターフェースを使用します。
- 既知のミスに対してガードします。 「すべての遅い結果をネットワークの問題と呼ぶ。」を見直し、これをキャッチする受け入れチェックを追加します。
- 作業負荷の範囲を制限します。 What Is Latencyのトピックに適した制限を設定します。ペイロード、同時実行数、実行時間、および該当する場合は保存された出力を含みます。
- 決定を記録します。 なぜWhat Is Latencyがこの境界に適合するのかを説明し、後で異なるアプローチを正当化する証拠を挙げてください。
結論
What Is Latencyはデザインのテスト可能な部分を記述するべきであり、近隣の振る舞いの緩いラベルとして機能してはいけません。この中心的な決定を保持するべきです:Latencyは遅延を測定します。データまたは作業が出発イベントから観察結果に移動するのにかかる時間を説明します。また、すべての遅い結果をネットワーク問題と呼ぶことから守るべきです。What Is Latencyのアクセスは、インターフェースまたはネットワークに関する文書化されたポリシーの範囲内に留めるべきです。
Webデータワークフローを構築する準備はできましたか?
測定されたWhat Is Latencyの取得または統合ステップを上記で説明した検証とストレージの実践に接続します。
今日サインアップして、 $5の無料クレジットを受け取ります。 — クレジットカードは不要です。.
$5のクレジットを請求する →FAQ
良いレイテンシとは何ですか?
良いレイテンシとは、特定の操作に対するユーザーとシステムの要件を満たすものです。キー入力、バッチエクスポート、夜間クロールは異なる待機が許容されるため、普遍的な閾値はありません。関連するエンドツーエンドイベントを測定し、明示的な目標を設定します。
レイテンシとpingは同じですか?
いいえ。Pingは一般的に診断プロトコルを使用してネットワークの往復時間を報告しますが、アプリケーションのレイテンシにはDNS、接続設定、暗号化、サーバー処理、応答転送、パース、レンダリングが含まれる場合があります。Pingは診断に役立ちますが、すべてのアプリケーションフェーズを表すわけではありません。
より多くの帯域幅はレイテンシを減らすことができますか?
より多くの帯域幅は、リンクがボトルネックである場合、特に大きなペイロードのときに直列化と転送時間を短縮します。しかし、伝播距離やサーバー計算を取り除くことはなく、他にアイドルな経路で小さなリクエストの往復時間を改善することはありません。
なぜAPIレイテンシは変動するのですか?
APIレイテンシは、ルート、キュー、接続の再利用、サーバーの負荷、キャッシュ、依存関係、ペイロードが異なるために変動します。結論を出す前に、地域、エンドポイント、応答サイズ、ステータス、接続状態で測定をセグメント化します。