Het controleren van langzame vragen en verwerkt MySQL

In dit artikel wordt gesproken over een aantal veelvoorkomende MySQL-problemen (trage query's, processen die te lang duren) die een nadelige invloed kunnen hebben op de site van een handelaar en de oplossingen die deze aangeeft.

MySQL "slow query" controleren

Beschrijving

Als u een stroomstoring had die mogelijk door een overbelaste database werd veroorzaakt, kunt u met deze stappen het langzame querylogboek van uw database controleren.

Vragen analyseren met MySQL-opdrachtregel (Adobe Commerce Cloud/on-premisse/Magento Open Source)

  1. Meld u aan bij uw MySQL-opdrachtregel (Adobe Commerce on-premisse/Magento Open Source) of bij uw cloudserver via de opdrachtregel (Adobe Commerce on cloud Infrastructure).

  2. Onderzoek het langzame vraaglogboek voor vragen langer dan 50 seconden:

    code language-bash
    grep 'Query_time: [5-9][0-9]|Query_time: [0-9][0-9][0-9]' /var/log/mysql/mysql-slow.log -A 3
    
  3. Ga naar https://www.unixtimestamp.com/ (of een vergelijkbare Unix-tijdstempelconverter) en voeg de tijdstempel in van wanneer de trage query is uitgevoerd.

  4. Als de tijd met om het even welke plaatsuitbarsting correleert die u ervoer, kon het door een overbelaste gegevensbestand worden veroorzaakt. Controleer welke ladingen op dat ogenblik in het gegevensbestand waren. Voorbeelden van dergelijke ladingen zijn:

  • Snijprocessen
  • Verkeer (bots of mensen)
  • Scripts importeren/exporteren
  • dumpen maken

Zoekopdrachten analyseren met Percona Toolkit (alleen Adobe Commerce Pro: Cloud-architectuur)

Als uw Adobe Commerce-project wordt geïmplementeerd op Pro-architectuur, kunt u query's analyseren met de Percona Toolkit .

  1. Voer de opdracht pt-query-digest --type=slowlog uit op basis van MySQL langzame querylogs.

  2. Gebaseerd op de gevonden kwesties, onderneem stappen om de vraag te bevestigen, zodat loopt het sneller.

MySQL "process list" controleren

Beschrijving

Dit zal helpen om te identificeren als de server MySQL levend is en dat er geen geplakte vragen zijn.

Stappen

  1. Meld u aan bij uw MySQL-opdrachtregel (Adobe Commerce on-premisse/Magento Open Source) of bij uw cloudserver via de opdrachtregel (Adobe Commerce on cloud Infrastructure).

  2. Meld u met het onderstaande codeblok aan bij MySQL. Hierdoor wordt het aanmeldingsproces geautomatiseerd.

    code language-mysql
    `export DB_NAME=$(grep [\']db[\'] -A 20 app/etc/env.php | grep dbname | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//");    export MYSQL_HOST=$(grep [\']db[\'] -A 20 app/etc/env.php | grep host | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//");    export DB_USER=$(grep [\']db[\'] -A 20 app/etc/env.php | grep username | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//");    export MYSQL_PWD=$(grep [\']db[\'] -A 20 app/etc/env.php | grep password | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/[']$//" | sed "s/['][,]//");    mysql -h $MYSQL_HOST -u $DB_USER --password=$MYSQL_PWD $DB_NAME -U -A -e 'show processlist;`
    
  3. Als u een fout terug krijgt of het meer dan 30 seconden vergt om te antwoorden, zou u Steun moeten contacteren om de server te controleren MySQL.

  4. Bekijk de voorbeelduitvoer.

  5. Hier volgt een voorbeeld van uitvoer:

    code language-mysql
    `$ mysql -h $MYSQL_HOST -u $DB_USER --password=$MYSQL_PWD $DB_NAME -U -A -e 'show processlist;'    +-----------+---------------+--------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+----------+    | Id        | User          | Host               | db            | Command | Time | State          | Info                                                                                                 | Progress |    +-----------+---------------+--------------------+---------------+---------+------+----------------+------------------------------------------------------------------------------------------------------+----------+    | 123456789 | abcdefghijklm | 192.168.7.10:12345 | abcdefghijklm | Query   |    0 | Writing to net | SELECT `magento_versionscms_hierarchy_node`.*, `page_table`.`title` AS `page_title`, `page_table`.`i |    0.000 |    | 123456788 | abcdefghijklm | 192.168.7.10:12344 | abcdefghijklm | Sleep   |    0 |                | NULL                                                                                                 |    0.000 |    | 123456777 | abcdefghijklm | 192.168.7.10:12333 | abcdefghijklm | Sleep   |    0 |                | NULL                                                                                                 |    0.000 |    | 123456666 | abcdefghijklm | 192.168.5.8:12222  | abcdefghijklm | Sleep   |    0 |                | NULL                                                                                                 |    0.000 |`
    
  6. Controleer de kolom "Tijd"voor om het even welke tijd groter dan 1800 seconden; dat wijst op een proces dat potentieel teveel tijd neemt om te voltooien. Noteer de status van de processen in de kolom "Staat".

  7. Herzie de vragen en misschien doden hen als zij worden gevonden niet om voor die tijdsduur te lopen. Het is mogelijk dat de lange lopende vragen kunnen worden verwacht.

Gerelateerde lezing

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a