View a markdown version of this page

ENA Express を使用して EC2 インスタンス間のネットワークパフォーマンスを高める - Amazon Elastic Compute Cloud

ENA Express を使用して EC2 インスタンス間のネットワークパフォーマンスを高める

ENA Express は、AWS スケーラブルで信頼性の高いデータグラム (SRD) テクノロジーを搭載しています。SRD は、動的ルーティングを使用してスループットを向上させ、テールレイテンシーを最小限に抑える高性能なネットワークトランスポートプロトコルです。ENA Express を使用すると、同じアベイラビリティゾーン内、または同じリージョン内の異なるアベイラビリティゾーンにある 2 つの EC2 インスタンス間で通信を行うことができます。

ENA Express の利点
  • 同一リージョン内において、単一フローが利用可能な最大帯域幅を 5Gbps から 25Gbps まで引き上げ、インスタンス全体の合計上限値まで適用可能にします。

  • 同じアベイラビリティゾーン内の EC2 インスタンス間のネットワークトラフィックのテールレイテンシを低減します。特にネットワーク負荷が高い時間帯において効果的です。

  • 混雑したネットワークパスを検出して回避します。

  • 受信側でのパケットの並べ替えや、必要とされるほとんどの再送信など、一部のタスクをネットワーク層で直接処理します。これにより、アプリケーション層が解放され、他の作業に充てることができるようになります。

注記
  • アプリケーションで 1 秒あたりのパケット数が多く、輻輳していない時間帯の遅延を最適化する必要がある場合は、拡張ネットワーク の方が適しているかもしれません。

  • ローカルゾーン内で ENA Express トラフィックを送信することはできません。

  • 南米 (サンパウロ)、中東 (バーレーン)、および中東 (UAE) では、アベイラビリティゾーン間のトラフィックに対する ENA Express のサポートは利用できません。

インスタンスのネットワークインターフェイスアタッチメントで ENA Express を有効にした後、送信側インスタンスは受信側インスタンスとの通信を開始し、SRD は 送信側インスタンスと受信側インスタンスの両方で ENA Express が動作しているかどうかを検出します。ENA Express が動作している場合、通信に SRD 送信を使用できます。ENA Express が動作していない場合、通信は標準の ENA 送信にフォールバックします。

ネットワークトラフィックが少ない時間帯には、パケットが ENA Express を使用する場合、パケットの遅延の中央値がわずかに増加 (数十マイクロ秒) することがあります。このような場合、特定のネットワークパフォーマンス特性を優先するアプリケーションには、次のような ENA Express の利点があります。

  • 同一リージョン内において、インスタンスの合計上限まで、最大単一フロー帯域幅が 5 Gbps から 25 Gbps に拡大されることで、プロセスのパフォーマンス向上が期待できます。例えば、特定のインスタンスタイプが最大 12.5 Gbps までサポートする場合、シングルフローの帯域幅も 12.5 Gbps までに制限されます。

  • 同じアベイラビリティゾーン内で長時間実行されているプロセスでは、ネットワークが混雑している期間中、テールレイテンシが低減されます。

  • プロセスには、ネットワークの応答時間をよりスムーズに、より標準的にディストリビューションできるという利点があります。

ENA Express の仕組み

ENA Express は、AWS スケーラブルで信頼性の高いデータグラム (SRD) テクノロジーを搭載しています。各ネットワークフローのパケットをさまざまな AWS ネットワークパスに分散し、輻輳の兆候を検出すると配信を動的に調整します。また、受信側でのパケットの並べ替えも管理します。

ENA Express がネットワークトラフィックを意図したとおりに管理できるようにするには、送受信インスタンスと受信側インスタンス間の通信が次の要件をすべて満たしている必要があります。

  • 送信側と受信側の両方のインスタンスタイプがサポートされています。詳細については、ENA Express でサポートされるインスタンスタイプの表を参照してください。

  • 送信側と受信側の両方のインスタンスに ENA Express が設定されている必要があります。設定に違いがあると、トラフィックがデフォルトで標準の ENA 送信になる状況が発生する可能性があります。発生し得る状況を次のシナリオで説明します。

    シナリオ: 設定の違い

    インスタンス ENA Express が有効になっている UDP は ENA Express を使用する
    インスタンス 1 はい はい
    インスタンス 2 はい いいえ

    この場合、2 つのインスタンスが ENA Express を有効にするので、両方のインスタンス間の TCP トラフィックで、ENA Express を使用できます。ただし、一方のインスタンスは UDP トラフィックに ENA Express を使用しないため、これら 2 つのインスタンス間の UDP 経由の通信には標準の ENA 送信が使用されます。

  • 送信側と受信側のインスタンスは、同じリージョンで実行されている必要があります。

  • インスタンス間のネットワークパスには、ミドルウェアボックスを含めないようにしてください。ENA Express は現在、ミドルウェアボックスをサポートしていません。

  • (Linux インスタンスのみ) 帯域幅を最大限に活用するには、ドライバーバージョン 2.2.9 以降を使用します。

  • (Linux インスタンスのみ) メトリクスを生成するには、ドライバーバージョン 2.8 以降を使用します。

いずれかの要件が満たされていない場合、インスタンスは標準の TCP/UDP プロトコルを使用して通信しますが、SRD は使用しません。

インスタンスのネットワークドライバーが最適なパフォーマンスを発揮できるように構成するには、ENA ドライバーの推奨ベストプラクティスを確認してください。これらのベストプラクティスは ENA Express にも当てはまります。詳細については、GitHub ウェブサイトの「ENA Linux ドライバーのベストプラクティスとパフォーマンス最適化ガイド」を参照してください。

注記

Amazon EC2 では、インスタンスとそれにアタッチされたネットワークインターフェイスとの関係をアタッチメントと呼びます。ENA Express の設定がアタッチメントに適用されます。ネットワークインターフェースがインスタンスからデタッチされると、アタッチメントは存在しなくなり、そのアタッチメントに適用されていた ENA Express 設定は無効になります。ネットワークインターフェースが残っていても、インスタンスが終了した場合、同様になります。

送信側と受信側の両方のインスタンスでネットワークインターフェイスをアタッチできるように ENA Express を有効にすると、インスタンスが SRD テクノロジーで実現されるパフォーマンス向上を全面的に享受できることを、ENA Express メトリクスを使用して容易に確認できます。ENA Express のメトリクスに関する詳細は、ENA Express のメトリクスを参照してください。

ENA Express でサポートされるインスタンスタイプ

次のインスタンスタイプが ENA Express をサポートしています。

General purpose
インスタンスタイプ アーキテクチャ
m6a.12xlarge x86_64
m6a.16xlarge x86_64
m6a.24xlarge x86_64
m6a.32xlarge x86_64
m6a.48xlarge x86_64
m6a.metal x86_64
m6i.8xlarge x86_64
m6i.12xlarge x86_64
m6i.16xlarge x86_64
m6i.24xlarge x86_64
m6i.32xlarge x86_64
m6i.metal x86_64
m6id.8xlarge x86_64
m6id.12xlarge x86_64
m6id.16xlarge x86_64
m6id.24xlarge x86_64
m6id.32xlarge x86_64
m6id.metal x86_64
m6idn.8xlarge x86_64
m6idn.12xlarge x86_64
m6idn.16xlarge x86_64
m6idn.24xlarge x86_64
m6idn.32xlarge x86_64
m6idn.metal x86_64
m6in.8xlarge x86_64
m6in.12xlarge x86_64
m6in.16xlarge x86_64
m6in.24xlarge x86_64
m6in.32xlarge x86_64
m6in.metal x86_64
m7a.12xlarge x86_64
m7a.16xlarge x86_64
m7a.24xlarge x86_64
m7a.32xlarge x86_64
m7a.48xlarge x86_64
m7a.metal-48xl x86_64
m7g.12xlarge arm64
m7g.16xlarge arm64
m7g.metal arm64
m7gd.12xlarge arm64
m7gd.16xlarge arm64
m7gd.metal arm64
m7i.12xlarge x86_64
m7i.16xlarge x86_64
m7i.24xlarge x86_64
m7i.48xlarge x86_64
m7i.metal-24xl x86_64
m7i.metal-48xl x86_64
m8a.16xlarge x86_64
m8a.24xlarge x86_64
m8a.48xlarge x86_64
m8a.metal-24xl x86_64
m8a.metal-48xl x86_64
m8azn.12xlarge x86_64
m8azn.24xlarge x86_64
m8azn.metal-12xl x86_64
m8azn.metal-24xl x86_64
m8g.12xlarge arm64
m8g.16xlarge arm64
m8g.24xlarge arm64
m8g.48xlarge arm64
m8g.metal-24xl arm64
m8g.metal-48xl arm64
m8gb.8xlarge arm64
m8gb.12xlarge arm64
m8gb.16xlarge arm64
m8gb.24xlarge arm64
m8gb.48xlarge arm64
m8gb.metal-24xl arm64
m8gb.metal-48xl arm64
m8gd.12xlarge arm64
m8gd.16xlarge arm64
m8gd.24xlarge arm64
m8gd.48xlarge arm64
m8gd.metal-24xl arm64
m8gd.metal-48xl arm64
m8gn.8xlarge arm64
m8gn.12xlarge arm64
m8gn.16xlarge arm64
m8gn.24xlarge arm64
m8gn.48xlarge arm64
m8gn.metal-24xl arm64
m8gn.metal-48xl arm64
m8i.24xlarge x86_64
m8i.32xlarge x86_64
m8i.48xlarge x86_64
m8i.96xlarge x86_64
m8i.metal-48xl x86_64
m8i.metal-96xl x86_64
m8id.24xlarge x86_64
m8id.32xlarge x86_64
m8id.48xlarge x86_64
m8id.96xlarge x86_64
m8id.metal-48xl x86_64
m8id.metal-96xl x86_64
m8in.12xlarge x86_64
m8in.16xlarge x86_64
m8in.24xlarge x86_64
m8in.32xlarge x86_64
m8in.48xlarge x86_64
m8in.96xlarge x86_64
m8idn.12xlarge x86_64
m8idn.16xlarge x86_64
m8idn.24xlarge x86_64
m8idn.32xlarge x86_64
m8idn.48xlarge x86_64
m8idn.96xlarge x86_64
m8ib.12xlarge x86_64
m8ib.16xlarge x86_64
m8ib.24xlarge x86_64
m8ib.32xlarge x86_64
m8ib.48xlarge x86_64
m8ib.96xlarge x86_64
m8idb.12xlarge x86_64
m8idb.16xlarge x86_64
m8idb.24xlarge x86_64
m8idb.32xlarge x86_64
m8idb.48xlarge x86_64
m8idb.96xlarge x86_64
Compute optimized
インスタンスタイプ アーキテクチャ
c6a.12xlarge x86_64
c6a.16xlarge x86_64
c6a.24xlarge x86_64
c6a.32xlarge x86_64
c6a.48xlarge x86_64
c6a.metal x86_64
c6gn.4xlarge arm64
c6gn.8xlarge arm64
c6gn.12xlarge arm64
c6gn.16xlarge arm64
c6i.8xlarge x86_64
c6i.12xlarge x86_64
c6i.16xlarge x86_64
c6i.24xlarge x86_64
c6i.32xlarge x86_64
c6i.metal x86_64
c6id.8xlarge x86_64
c6id.12xlarge x86_64
c6id.16xlarge x86_64
c6id.24xlarge x86_64
c6id.32xlarge x86_64
c6id.metal x86_64
c6in.8xlarge x86_64
c6in.12xlarge x86_64
c6in.16xlarge x86_64
c6in.24xlarge x86_64
c6in.32xlarge x86_64
c6in.metal x86_64
c7a.12xlarge x86_64
c7a.16xlarge x86_64
c7a.24xlarge x86_64
c7a.32xlarge x86_64
c7a.48xlarge x86_64
c7a.metal-48xl x86_64
c7g.12xlarge arm64
c7g.16xlarge arm64
c7g.metal arm64
c7gd.12xlarge arm64
c7gd.16xlarge arm64
c7gd.metal arm64
c7gn.4xlarge arm64
c7gn.8xlarge arm64
c7gn.12xlarge arm64
c7gn.16xlarge arm64
c7gn.metal arm64
c7i.12xlarge x86_64
c7i.16xlarge x86_64
c7i.24xlarge x86_64
c7i.48xlarge x86_64
c7i.metal-24xl x86_64
c7i.metal-48xl x86_64
c8a.16xlarge x86_64
c8a.24xlarge x86_64
c8a.48xlarge x86_64
c8a.metal-24xl x86_64
c8a.metal-48xl x86_64
c8g.12xlarge arm64
c8g.16xlarge arm64
c8g.24xlarge arm64
c8g.48xlarge arm64
c8g.metal-24xl arm64
c8g.metal-48xl arm64
c8gb.8xlarge arm64
c8gb.12xlarge arm64
c8gb.16xlarge arm64
c8gb.24xlarge arm64
c8gb.48xlarge arm64
c8gb.metal-24xl arm64
c8gb.metal-48xl arm64
c8gd.12xlarge arm64
c8gd.16xlarge arm64
c8gd.24xlarge arm64
c8gd.48xlarge arm64
c8gd.metal-24xl arm64
c8gd.metal-48xl arm64
c8gn.8xlarge arm64
c8gn.12xlarge arm64
c8gn.16xlarge arm64
c8gn.24xlarge arm64
c8gn.48xlarge arm64
c8gn.metal-24xl arm64
c8gn.metal-48xl arm64
c8i.24xlarge x86_64
c8i.32xlarge x86_64
c8i.48xlarge x86_64
c8i.96xlarge x86_64
c8i.metal-48xl x86_64
c8i.metal-96xl x86_64
c8id.24xlarge x86_64
c8id.32xlarge x86_64
c8id.48xlarge x86_64
c8id.96xlarge x86_64
c8id.metal-48xl x86_64
c8id.metal-96xl x86_64
c8in.12xlarge x86_64
c8in.16xlarge x86_64
c8in.24xlarge x86_64
c8in.32xlarge x86_64
c8in.48xlarge x86_64
c8in.96xlarge x86_64
c8in.metal-48xl x86_64
c8in.metal-96xl x86_64
c8ib.12xlarge x86_64
c8ib.16xlarge x86_64
c8ib.24xlarge x86_64
c8ib.32xlarge x86_64
c8ib.48xlarge x86_64
c8ib.96xlarge x86_64
c8ib.metal-48xl x86_64
c8ib.metal-96xl x86_64
Memory optimized
インスタンスタイプ アーキテクチャ
r6a.12xlarge x86_64
r6a.16xlarge x86_64
r6a.24xlarge x86_64
r6a.32xlarge x86_64
r6a.48xlarge x86_64
r6a.metal x86_64
r6i.8xlarge x86_64
r6i.12xlarge x86_64
r6i.16xlarge x86_64
r6i.24xlarge x86_64
r6i.32xlarge x86_64
r6i.metal x86_64
r6id.8xlarge x86_64
r6id.12xlarge x86_64
r6id.16xlarge x86_64
r6id.24xlarge x86_64
r6id.32xlarge x86_64
r6id.metal x86_64
r6idn.8xlarge x86_64
r6idn.12xlarge x86_64
r6idn.16xlarge x86_64
r6idn.24xlarge x86_64
r6idn.32xlarge x86_64
r6idn.metal x86_64
r6in.8xlarge x86_64
r6in.12xlarge x86_64
r6in.16xlarge x86_64
r6in.24xlarge x86_64
r6in.32xlarge x86_64
r6in.metal x86_64
r7a.12xlarge x86_64
r7a.16xlarge x86_64
r7a.24xlarge x86_64
r7a.32xlarge x86_64
r7a.48xlarge x86_64
r7a.metal-48xl x86_64
r7g.12xlarge arm64
r7g.16xlarge arm64
r7g.metal arm64
r7gd.12xlarge arm64
r7gd.16xlarge arm64
r7gd.metal arm64
r7i.12xlarge x86_64
r7i.16xlarge x86_64
r7i.24xlarge x86_64
r7i.48xlarge x86_64
r7i.metal-24xl x86_64
r7i.metal-48xl x86_64
r7iz.8xlarge x86_64
r7iz.12xlarge x86_64
r7iz.16xlarge x86_64
r7iz.32xlarge x86_64
r7iz.metal-16xl x86_64
r7iz.metal-32xl x86_64
r8a.16xlarge x86_64
r8a.24xlarge x86_64
r8a.48xlarge x86_64
r8a.metal-24xl x86_64
r8a.metal-48xl x86_64
r8g.12xlarge arm64
r8g.16xlarge arm64
r8g.24xlarge arm64
r8g.48xlarge arm64
r8g.metal-24xl arm64
r8g.metal-48xl arm64
r8gb.8xlarge arm64
r8gb.12xlarge arm64
r8gb.16xlarge arm64
r8gb.24xlarge arm64
r8gb.48xlarge arm64
r8gb.metal-24xl arm64
r8gb.metal-48xl arm64
r8gd.12xlarge arm64
r8gd.16xlarge arm64
r8gd.24xlarge arm64
r8gd.48xlarge arm64
r8gd.metal-24xl arm64
r8gd.metal-48xl arm64
r8gn.8xlarge arm64
r8gn.12xlarge arm64
r8gn.16xlarge arm64
r8gn.24xlarge arm64
r8gn.48xlarge arm64
r8gn.metal-24xl arm64
r8gn.metal-48xl arm64
r8i.24xlarge x86_64
r8i.32xlarge x86_64
r8i.48xlarge x86_64
r8i.96xlarge x86_64
r8i.metal-48xl x86_64
r8i.metal-96xl x86_64
r8id.24xlarge x86_64
r8id.32xlarge x86_64
r8id.48xlarge x86_64
r8id.96xlarge x86_64
r8id.metal-48xl x86_64
r8id.metal-96xl x86_64
r8in.12xlarge x86_64
r8in.16xlarge x86_64
r8in.24xlarge x86_64
r8in.32xlarge x86_64
r8in.48xlarge x86_64
r8in.96xlarge x86_64
r8idn.12xlarge x86_64
r8idn.16xlarge x86_64
r8idn.24xlarge x86_64
r8idn.32xlarge x86_64
r8idn.48xlarge x86_64
r8idn.96xlarge x86_64
r8ib.12xlarge x86_64
r8ib.16xlarge x86_64
r8ib.24xlarge x86_64
r8ib.32xlarge x86_64
r8ib.48xlarge x86_64
r8ib.96xlarge x86_64
r8idb.12xlarge x86_64
r8idb.16xlarge x86_64
r8idb.24xlarge x86_64
r8idb.32xlarge x86_64
r8idb.48xlarge x86_64
r8idb.96xlarge x86_64
u7i-6tb.112xlarge x86_64
u7i-8tb.112xlarge x86_64
u7i-12tb.224xlarge x86_64
u7in-16tb.224xlarge x86_64
u7in-24tb.224xlarge x86_64
u7in-32tb.224xlarge x86_64
u7inh-32tb.480xlarge x86_64
x2idn.16xlarge x86_64
x2idn.24xlarge x86_64
x2idn.32xlarge x86_64
x2idn.metal x86_64
x2iedn.8xlarge x86_64
x2iedn.16xlarge x86_64
x2iedn.24xlarge x86_64
x2iedn.32xlarge x86_64
x2iedn.metal x86_64
x8g.12xlarge arm64
x8g.16xlarge arm64
x8g.24xlarge arm64
x8g.48xlarge arm64
x8g.metal-24xl arm64
x8g.metal-48xl arm64
x8aedz.24xlarge x86_64
x8aedz.metal-24xl x86_64
x8i.24xlarge x86_64
x8i.32xlarge x86_64
x8i.48xlarge x86_64
x8i.64xlarge x86_64
x8i.96xlarge x86_64
x8i.metal-48xl x86_64
x8i.metal-96xl x86_64
Accelerated computing
インスタンスタイプ アーキテクチャ
g6.48xlarge x86_64
g6e.12xlarge x86_64
g6e.24xlarge x86_64
g6e.48xlarge x86_64
g7e.12xlarge x86_64
g7e.24xlarge x86_64
g7e.48xlarge x86_64
p5.4xlarge x86_64
p5.48xlarge x86_64
p5e.48xlarge x86_64
p5en.48xlarge x86_64
p6-b200.48xlarge x86_64
p6-b300.48xlarge x86_64
Storage optimized
インスタンスタイプ アーキテクチャ
i4g.4xlarge arm64
i4g.8xlarge arm64
i4g.16xlarge arm64
i4i.8xlarge x86_64
i4i.12xlarge x86_64
i4i.16xlarge x86_64
i4i.24xlarge x86_64
i4i.32xlarge x86_64
i4i.metal x86_64
i7i.12xlarge x86_64
i7i.16xlarge x86_64
i7i.24xlarge x86_64
i7i.48xlarge x86_64
i7i.metal-24xl x86_64
i7i.metal-48xl x86_64
i7ie.12xlarge x86_64
i7ie.18xlarge x86_64
i7ie.24xlarge x86_64
i7ie.48xlarge x86_64
i7ie.metal-24xl x86_64
i7ie.metal-48xl x86_64
i8g.12xlarge arm64
i8g.16xlarge arm64
i8g.24xlarge arm64
i8g.48xlarge arm64
i8g.metal-24xl arm64
i8g.metal-48xl arm64
i8ge.12xlarge arm64
i8ge.18xlarge arm64
i8ge.24xlarge arm64
i8ge.48xlarge arm64
i8ge.metal-24xl arm64
i8ge.metal-48xl arm64
im4gn.4xlarge arm64
im4gn.8xlarge arm64
im4gn.16xlarge arm64

Linux インスタンスで ENA Express 設定のパフォーマンスをチューニングする

ENA Express を効果的に運用するためには、お使いの Linux インスタンスがいくつかのネットワーク設定要件を満たしている必要があります。

各設定を手動で設定する代わりに、Amazon GitHub リポジトリから ENA Express の設定チェックスクリプトをダウンロードして実行することができます。このスクリプトは、お使いのインスタンスが ENA Express の必須設定および推奨設定を満たしているかどうかを確認し、検出された問題を修正するための具体的なコマンドを出力します。

https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh

このスクリプトは、以下の設定と構成を確認します:

  • MTU サイズ – ENA Express では、追加の AWS SRD ヘッダーを収容するために、デフォルトよりも小さい MTU が必要です。この問題を軽減するため、新しく確立された TCP 接続では MSS が自動的に制限されますが、UDP トラフィックでは依然としてより低い MTU が必要です。

  • TCP 出力キューのサイズ制限 – ソケットごとの処理中のバイト数の上限が、高いスループットを維持するのに十分であるかを確認します。ネットワークの遅延が大きい環境では、より高い上限値が必要です。

  • バイトキュー制限 — ネットワークインターフェースでバイトキュー制限 (BQL) が無効になっていることを確認します。BQL は、デバイスレベルでの送信のためにキューに入れられるデータ量を制限することができ、これにより ENA Express のパフォーマンスが低下します。

    注記

    Amazon Linux ディストリビューションの ENA ドライバーは、デフォルトでバイトキュー制限を無効にします。

  • TCP オートコーキング — TCP オートコーキングが無効になっているかどうかを確認します。オートコーキングを無効にすると、リクエスト・レスポンス型のワークロードなど、特定の ENA Express TCP トラフィックパターンにおいてレイテンシを低減できる場合があります。これにより、パケット処理のオーバーヘッドがわずかに増加する可能性があります。

  • TX キューサイズと Large LLQ – ネットワークインターフェースの送信キューサイズが、最適なパフォーマンスを発揮するのに十分な大きさであることを確認します。また、このスクリプトでは、ENA モジュールのパラメータによって Large Low Latency Queue (Large LLQ) 機能が明示的に無効化されていないかどうかも確認します。これは、この機能が利用可能な TX キューの深さを減少させる可能性があるためです。Large LLQ および TX キューサイズへの影響に関する詳細については、GitHub の 「Large Low Latency Queue (Large LLQ)」 を参照してください。

  • RX キューサイズ – ネットワークインターフェースの受信リングバッファが、着信トラフィックを効率的に処理し、負荷がかかった際にパケットがドロップされないように十分な容量を確保しているかを確認します。

  • TCP およびネットワークソケットバッファサイズ – TCP の受信および送信バッファの最大サイズ、ならびにコアネットワークソケットのバッファのデフォルト値および最大値が、高いスループットを維持するのに十分な大きさであることを検証します。これらの設定は、ネットワークの遅延が大きくなる環境において、接続を有効に活用するために大きなバッファが必要となる場合に重要です。

  • TCP 輻輳制御 – ネットワーク遅延が大きい環境において、TCP 輻輳制御の設定が ENA Express での使用に最適化されていることを確認します。

このスクリプトは、ENA ドライバのバージョン、ENA SRD の統計情報、割り込み調整設定、キュー構成、ソケットバッファサイズなど、その他の診断情報も報告します。この情報は、ENA Express のパフォーマンスに関する問題のトラブルシューティングに役立ちます。

インスタンスのネットワークドライバが最適なパフォーマンスを発揮するように設定されていることを確認するため、GitHub にある 「ENA Linux ドライバーのベストプラクティスとパフォーマンス最適化ガイド」 も確認してください。