Collo di bottiglia di MySQL ad alto carico in Adobe Commerce sull’infrastruttura cloud
Questo argomento descrive una soluzione quando un carico elevato da MySQL causa un problema di collo di bottiglia delle prestazioni in Adobe Commerce sull’infrastruttura cloud.
Prodotti e versioni interessati
- Adobe Commerce su infrastruttura cloud 2.x.x, account Pro.
Prerequisiti
- ECE Tools versione 2002.0.16 e successive
- Servizio New Relic APM (L'account Adobe Commerce sull'infrastruttura cloud include il software per il servizio New Relic APM insieme a una chiave di licenza.)
Per ulteriori informazioni sul servizio New Relic APM e sulla relativa configurazione con l'account Adobe Commerce sull'infrastruttura cloud, vedere Servizi New Relic e Introduzione a New Relic APM.
Problema
Passaggi Per Verificare Se Il Problema Ti Interessa
-
Nel grafico di panoramica di New Relic APM, verificare che MySQL sia diventato un collo di bottiglia. Vedere l'immagine di esempio seguente in cui MySQL è diventato un collo di bottiglia e richiede la maggior parte del tempo delle transazioni Web:
Si noti come la linea tratteggiata rossa nell'immagine mostri una tendenza verso l'alto distinguibile nel tempo delle transazioni Web MySQL e quindi picchi a livelli ancora più alti.
-
Da qui è possibile passare alla schermata Database in cui è possibile visualizzare la seconda indicazione di un throughput elevato o di query
SELECT
lente in MySQL e nell'immagine di esempio seguente è possibile vedere quando si ordina in base a Più dispendioso in termini di tempo, l'archivio, in questo esempio, è lento perSELECT
query MySQL.
Analizzare le transazioni lente in New Relic APM. Se il volume di query o la pressione su un database MySQL è elevato, è possibile distribuire il carico tra nodi diversi abilitando SLAVE
connessioni.
Causa
Il tuo archivio Adobe Commerce sull'infrastruttura cloud ha un throughput elevato o è lento per SELECT
query MySQL.
Soluzione
https://console.adobecommerce.com/<owner-user-name>/<project-ID>/<environment-name>
. Fai clic su SSH. Se sono presenti più di tre nodi, l’architettura è in scala. Se abiliti Redis Slave Reads su architettura scalata, il cliente riceverà errori quando le connessioni Redis non sono in grado di connettersi. Questo ha a che fare con il modo in cui i cluster sono configurati per elaborare le connessioni Redis. Gli schiavi Redis sono ancora attivi ma non verranno utilizzati per Redis Reads. Per l’architettura scalata si consiglia di utilizzare Adobe Commerce 2.3.5 o versione successiva e implementare la nuova configurazione back-end Redis e implementare il caching L2 per Redis.Se si verificano queste due indicazioni, l'abilitazione delle connessioni SLAVE
per il database MySQL e Redis può aiutare a distribuire il carico tra nodi diversi.
Adobe Commerce può leggere più database o Redis in modo asincrono. Aggiornamento del file .magento.env.yaml
impostando su true
i valori MYSQL_USE_SLAVE_CONNECTION
e REDIS_USE_SLAVE_CONNECTION
per utilizzare una connessione di sola lettura al database per ricevere traffico di sola lettura su un nodo non principale. Ciò migliora le prestazioni tramite il bilanciamento del carico, in quanto solo un nodo deve gestire il traffico di lettura-scrittura. Impostare su false
per rimuovere qualsiasi array di connessione di sola lettura esistente dal file env.php
.
Passaggi
-
Modifica il file
.magento.env.yaml
e aggiungi il seguente contenuto:Ulteriori dettagli sono disponibili in Distribuire variabili in DevDocs.
-
Apporta le modifiche e le invia in push.
-
Il push delle modifiche avvierà un nuovo processo di distribuzione. Una volta completata la distribuzione, l’istanza di Adobe Commerce sull’infrastruttura cloud ora deve essere configurata per l’utilizzo di connessioni slave.
Domande comuni
Di seguito sono riportate le domande comuni che potresti porre quando prendi in considerazione l’utilizzo della funzionalità Connessioni slave per l’archivio dell’infrastruttura cloud di Adobe Commerce.
-
Esistono problemi noti o limitazioni all’utilizzo delle connessioni slave? Non sono stati rilevati problemi durante l'utilizzo delle connessioni slave. Assicurati di utilizzare il pacchetto di strumenti ece aggiornato più di recente. Le istruzioni sono disponibili qui in come aggiornare il pacchetto ece-tools.
-
Esiste una latenza aggiuntiva con l’utilizzo delle connessioni slave? Sì, la latenza cross-AZ (cross-Availability Zones) è più elevata e riduce le prestazioni di un'istanza Adobe Commerce sull'infrastruttura cloud nel caso in cui l'istanza non sia sovraccarica e possa sopportare l'intero carico. Tuttavia, se l'istanza è sovraccarica, master-slave contribuirà alle prestazioni distribuendo il carico sul database MySQL o Redis tra nodi diversi.
Nei cluster non sovraccaricati - Le connessioni slave rallenteranno le prestazioni del 10-15%, che è uno dei motivi per cui non è predefinito.
Nei cluster con sovraccarico, tuttavia, si verifica un aumento delle prestazioni perché questi 10-15% vengono mitigati riducendo il carico dal traffico.
-
È necessario attivare queste impostazioni per il negozio? Se il carico è elevato o si prevede un carico elevato sul database MySQL o Redis, è assolutamente necessario abilitare le connessioni slave. Per un cliente normale con traffico medio, questa è not un'impostazione ottimale da abilitare.
Lettura correlata
Nella documentazione per gli sviluppatori: