クラウドインフラストラクチャー上のAdobe Commerceにおける MySQL の高負荷ボトルネック
ここでは、MySQL からの高負荷が原因で、クラウドインフラストラクチャー上のAdobe Commerceでパフォーマンスがボトルネックになる場合の解決策について説明します。
影響を受ける製品とバージョン
- クラウドインフラストラクチャー 2.x.x 上のAdobe Commerce、Pro アカウント。
前提条件
- ECE ツールバージョン 2002.0.16 以降
- New Relic APM サービス (クラウドインフラストラクチャアカウント上のAdobe Commerceには、New Relic APM サービスのソフトウェアとライセンスキーが含まれています)
New Relic APM サービスと、クラウドインフラストラクチャアカウント上のAdobe Commerceを使用した設定について詳しくは、New Relic サービスおよび New Relic APM の概要を参照してください。
問題
問題が影響を受けるかどうかを確認する手順
-
New Relicの APM の概要グラフで、MySQL がボトルネックになっていることが最初に示されているかを確認します。 以下のサンプル図を参照してください。ここでは、MySQL がボトルネックとなり、web トランザクション時間の大部分を占めています。
画像の赤い破線は、MySQL web トランザクションの時間に目に見える上昇傾向を示し、さらに高いレベルでピークを迎えています。
-
ここから データベース 画面に移動すると、MySQL の高スループットまたは遅
SELECT
クエリの 2 番目の指標が表示されます。以下のサンプル画像では、最も時間がかかる で並べ替えると、この例ではストアの MySQL クエリが遅SELECT
ことがわかります。
New Relic APM で低速のトランザクションを分析します。 MySQL データベースに大量のクエリや高い圧力がかかる場合は、SLAVE
接続を有効にすることで、負荷を様々なノードに分散させることができます。
原因:
クラウドインフラストラクチャストア上のAdobe Commerceのスループットが高いか、MySQL クエリ SELECT
処理が遅い。
解決策
https://console.adobecommerce.com/<owner-user-name>/<project-ID>/<environment-name>
)に移動します。 「SSH」をクリックします。 ノードが 3 つ以上ある場合は、スケールされたアーキテクチャ上にあります。 スケーリングされたアーキテクチャで Redis スレーブ読み取りを有効にすると、お客様は Redis 接続が接続できないというエラーを受け取ります。 これは、Redis 接続を処理するためにクラスターがどのように設定されているかに関係しています。 Redis スレーブはアクティブですが、Redis 読み取りには使用されません。 Adobe Commerce 2.3.5 以降を使用し、新しい Redis バックエンド設定を実装し、Redis 用の L2 キャッシングを実装するために、スケールアーキテクチャをお勧めします。これらの 2 つの兆候が発生した場合、MySQL データベースと Redis の SLAVE
接続を有効にすると、負荷を様々なノードに分散させるのに役立ちます。
Adobe Commerceは、複数のデータベースまたは Redis を非同期で読み取ることができます。 .magento.env.yaml
ファイルを更新します。値 MYSQL_USE_SLAVE_CONNECTION
を true
に設定し、REDIS_USE_SLAVE_CONNECTION
をデータベースへの 読み取り専用 接続を使用して非マスターノードで読み取り専用トラフィックを受信するようにします。 読み取り/書き込みトラフィックを処理する必要があるのは 1 つのノードのみであるため、ロード・バランシングによってパフォーマンスが向上します。 既存の読み取り専用接続配列を env.php
ファイルから削除するには、false
に設定します。
手順
-
.magento.env.yaml
ファイルを編集し、次の内容を追加します。詳しくは、DevDocs で変数をデプロイを参照してください。
-
変更をコミットし、変更をプッシュします。
-
変更をプッシュすると、新しいデプロイメントプロセスが開始されます。 デプロイメントが正常に完了したら、Adobe Commerce on cloud infrastructure インスタンスがスレーブ接続を使用するように設定されています。
よくある質問
クラウドインフラストラクチャストア上のAdobe Commerceにスレーブ接続機能を使用する場合に尋ねられうる一般的な質問を以下に示します。
-
スレーブ接続を使用する際の既知の問題や制限はありますか? スレーブ接続の使用に関する既知の問題はありません。 最新の ece-tools パッケージを使用していることを確認してください。 手順は ece-tools パッケージの更新方法で確認できます。
-
スレーブ接続を使用して追加のレイテンシーはありますか? はい。クロス AZ (クロス可用性ゾーン)の待ち時間は、インスタンスが過負荷ではなく、負荷全体を処理できる場合に、クラウドインフラストラクチャインスタンス上のAdobe Commerceのパフォーマンスを低下させます。 ただし、インスタンスが過負荷の場合、マスタースレーブは異なるノードに MySQL データベースまたは Redis の負荷を分散させることで、パフォーマンスの向上に役立ちます。
オーバーロードされていないクラスターで - スレーブ接続では、パフォーマンスが 10~15% 低下します。これは、デフォルトではない理由の 1 つです。
ただし、過負荷のクラスターでは、トラフィックによる負荷を減らすことで 10~15% が軽減されるので、パフォーマンスが向上します。
-
ストアに対してこれらの設定を有効にする必要がありますか? MySQL データベースまたは Redis の負荷が高い、または高いと予想される場合は、必ずスレーブ接続を有効にする必要があります。 平均トラフィックを使用する通常の顧客の場合、これは有効にする ではなく 最適な設定です。
関連資料
開発者向けドキュメントでは、