Différences entre versions de « Activer les logs de requêtes lentes MySQL »

De Ikoula Wiki
Jump to navigation Jump to search
 
(18 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<span data-link_translate_fr_title="Activer les logs de requêtes lentes MySQL"  data-link_translate_fr_url="Activer les logs de requêtes lentes MySQL"></span>[[:fr:Activer les logs de requêtes lentes MySQL]][[fr:Activer les logs de requêtes lentes MySQL]]
 +
<span data-link_translate_he_title="לאפשר שאילתות איטי יומני MySQL"  data-link_translate_he_url="%D7%9C%D7%90%D7%A4%D7%A9%D7%A8+%D7%A9%D7%90%D7%99%D7%9C%D7%AA%D7%95%D7%AA+%D7%90%D7%99%D7%98%D7%99+%D7%99%D7%95%D7%9E%D7%A0%D7%99+MySQL"></span>[[:he:לאפשר שאילתות איטי יומני MySQL]][[he:לאפשר שאילתות איטי יומני MySQL]]
 +
<span data-link_translate_ro_title="Enable lent întrebare MySQL busteni"  data-link_translate_ro_url="Enable+lent+%C3%AEntrebare+MySQL+busteni"></span>[[:ro:Enable lent întrebare MySQL busteni]][[ro:Enable lent întrebare MySQL busteni]]
 +
<span data-link_translate_ru_title="Включение медленных запросов MySQL журналы"  data-link_translate_ru_url="%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2+MySQL+%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D1%8B"></span>[[:ru:Включение медленных запросов MySQL журналы]][[ru:Включение медленных запросов MySQL журналы]]
 +
<span data-link_translate_pl_title="Po wolnych zapytań MySQL logi"  data-link_translate_pl_url="Po+wolnych+zapyta%C5%84+MySQL+logi"></span>[[:pl:Po wolnych zapytań MySQL logi]][[pl:Po wolnych zapytań MySQL logi]]
 +
<span data-link_translate_ja_title="低速のクエリ MySQL のログを有効にします。"  data-link_translate_ja_url="%E4%BD%8E%E9%80%9F%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA+MySQL+%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82"></span>[[:ja:低速のクエリ MySQL のログを有効にします。]][[ja:低速のクエリ MySQL のログを有効にします。]]
 +
<span data-link_translate_ar_title="تمكين الاستعلامات بطيئة سجلات الخلية"  data-link_translate_ar_url="%D8%AA%D9%85%D9%83%D9%8A%D9%86+%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85%D8%A7%D8%AA+%D8%A8%D8%B7%D9%8A%D8%A6%D8%A9+%D8%B3%D8%AC%D9%84%D8%A7%D8%AA+%D8%A7%D9%84%D8%AE%D9%84%D9%8A%D8%A9"></span>[[:ar:تمكين الاستعلامات بطيئة سجلات الخلية]][[ar:تمكين الاستعلامات بطيئة سجلات الخلية]]
 +
<span data-link_translate_zh_title="启用慢速查询 MySQL 日志"  data-link_translate_zh_url="%E5%90%AF%E7%94%A8%E6%85%A2%E9%80%9F%E6%9F%A5%E8%AF%A2+MySQL+%E6%97%A5%E5%BF%97"></span>[[:zh:启用慢速查询 MySQL 日志]][[zh:启用慢速查询 MySQL 日志]]
 +
<span data-link_translate_de_title="Langsame Abfragen MySQL Protokolle aktivieren"  data-link_translate_de_url="Langsame+Abfragen+MySQL+Protokolle+aktivieren"></span>[[:de:Langsame Abfragen MySQL Protokolle aktivieren]][[de:Langsame Abfragen MySQL Protokolle aktivieren]]
 +
<span data-link_translate_nl_title="Langzame vragen MySQL logboeken inschakelen"  data-link_translate_nl_url="Langzame+vragen+MySQL+logboeken+inschakelen"></span>[[:nl:Langzame vragen MySQL logboeken inschakelen]][[nl:Langzame vragen MySQL logboeken inschakelen]]
 +
<span data-link_translate_it_title="Attivare slow query log di MySQL"  data-link_translate_it_url="Attivare+slow+query+log+di+MySQL"></span>[[:it:Attivare slow query log di MySQL]][[it:Attivare slow query log di MySQL]]
 +
<span data-link_translate_pt_title="Permitir consultas lentas os logs do MySQL"  data-link_translate_pt_url="Permitir+consultas+lentas+os+logs+do+MySQL"></span>[[:pt:Permitir consultas lentas os logs do MySQL]][[pt:Permitir consultas lentas os logs do MySQL]]
 +
<span data-link_translate_es_title="Permitir consultas lentas de MySQL logs"  data-link_translate_es_url="Permitir+consultas+lentas+de+MySQL+logs"></span>[[:es:Permitir consultas lentas de MySQL logs]][[es:Permitir consultas lentas de MySQL logs]]
 +
<span data-link_translate_en_title="Enable slow queries MySQL logs"  data-link_translate_en_url="Enable+slow+queries+MySQL+logs"></span>[[:en:Enable slow queries MySQL logs]][[en:Enable slow queries MySQL logs]]
 
<span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="ro"></span><span data-link_translate="pl"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin -->
 
<span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="he"></span><span data-link_translate="ro"></span><span data-link_translate="ru"></span><span data-link_translate="pl"></span><span data-link_translate="ja"></span><span data-link_translate="ar"></span><span data-link_translate="zh"></span><span data-link_translate="ro"></span><span data-link_translate="pl"></span><span data-link_translate="de"></span><span data-link_translate="nl"></span><span data-link_translate="it"></span><span data-link_translate="pt"></span><span data-link_translate="es"></span><span data-link_translate="en"></span><!-- Début de l'article. Placez votre texte ci-après et n'hésitez pas à personnaliser les chapitres selon votre besoin -->
 +
 +
{{#seo:
 +
|title=Activer les logs de requêtes lentes MySQL
 +
|title_mode=append
 +
|keywords=these,are,your,keywords
 +
|description=Découvrez dans cet article comment activer les logs des requêtes lentes MySQL afin de les analyser et les corriger.
 +
|image=Uploaded_file.png
 +
|image_alt=Wiki Logo
 +
}}
  
 
==Introduction== <!--T:1-->
 
==Introduction== <!--T:1-->
Ligne 5 : Ligne 28 :
  
 
==Déroulé== <!--T:2-->
 
==Déroulé== <!--T:2-->
 +
 +
<span style="background-color: #F4D4D4; padding: 5px; display: block">Veuillez noter qu'activer les logs de slow queries peut ralentir votre {{Template:Serveur}}, étant donné que des écritures seront effectuées en même temps que l'exécution des requêtes lentes.</span>
 
===Vérifier que les logs ne sont pas déjà actifs===
 
===Vérifier que les logs ne sont pas déjà actifs===
Afin de nous assurer que les logs de slow queries ne sont pas déjà activés, connectez-vous en SSH à votre machine et entrez dans le shell MySQL:
+
Afin de nous assurer que les logs de slow queries ne sont pas déjà activés, connectez-vous en SSH à votre machine et entrez dans le shell MySQL :
 
<br />
 
<br />
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Ligne 18 : Ligne 43 :
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br />
 
<br />
Naviguez jusqu'à constater dans le colonne de gauche la variable "slow_query_log" : sur 'ON', les logs sont actifs. Sur 'OFF', nous devons les activer.<br />
+
Naviguez jusqu'à constater dans la colonne de gauche la variable "slow_query_log" : sur 'ON', les logs sont actifs. Sur 'OFF', nous devons les activer.<br />
 
<br />
 
<br />
 
[[File:Slow-queries-1.png]]
 
[[File:Slow-queries-1.png]]
Ligne 27 : Ligne 52 :
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br />
 
<br />
Vous pouvez également défini un chemin vers le répertoire où seront stockés les logs de requêtes lentes :
+
Vous pouvez également définir un chemin vers le répertoire où seront stockés les logs de requêtes lentes :
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
 
set global slow_query_log_file ='/var/log/mysql/slow-query.log';
 
set global slow_query_log_file ='/var/log/mysql/slow-query.log';
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br />
 
<br />
Enfin, définissez un temps minimum alloué à chaque requête pour vous assurer de ne pas avoir de faux-positifs de requêtes lentes : 10 secondes est une valeur correcte, 20 secondes est conseillé si il arrive que votre serveur faiblisse fasse au nombre de requêtes et de visiteurs (cette variable est de base définie à 10 secondes) :
+
Enfin, définissez un temps minimum alloué à chaque requête pour vous assurer de ne pas avoir de faux-positifs de requêtes lentes : 10 secondes est une valeur correcte, 20 secondes est conseillé si il arrive que votre {{Template:Serveur}} faiblisse face au nombre de requêtes et de visiteurs (cette variable est de base définie à 10 secondes) :
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
 
set global long_query_time = '20';
 
set global long_query_time = '20';
Ligne 55 : Ligne 80 :
  
 
===Explication du phénomène===
 
===Explication du phénomène===
Comme expliqué au début de cette fiche, les slow queries sont dédfinie par le temps d'exécution défini des requêtes ; si la requête met plus de temps que la limite définie par long_query_time à être exécutée, elle est définie comme slow querie. La première raison de l'obtention de requêtes longues peut être le mauvais parametrage de la variable MySQL "long_query_time" ; un temps maximum trop faible pourra mettre certaines requêtes un peu lourdes directement en slow alors qu'elles sont en réalité tout à fait normales.<br /><br />
+
Comme expliqué au début de cette fiche, les slow queries sont dédfinie par le temps d'exécution défini des requêtes ; si la requête met plus de temps que la limite définie par long_query_time à être exécutée, elle est définie comme slow querie. La première raison de l'obtention de requêtes longues peut être le mauvais paramétrage de la variable MySQL "long_query_time" ; un temps maximum trop faible pourra mettre certaines requêtes un peu lourdes directement en slow alors qu'elles sont en réalité tout à fait normales.<br /><br />
 
Une autre raison peut être liée à l'utilisation de MySQL par un service externe ; dans le cas d'un site internet par exemple, une mauvaise programmation n'intégrant pas de fermeture automatique des connexions à MySQL peut remplir le tampon et ainsi rendre les temps d'exécution de requêtes plus longs.<br /><br />
 
Une autre raison peut être liée à l'utilisation de MySQL par un service externe ; dans le cas d'un site internet par exemple, une mauvaise programmation n'intégrant pas de fermeture automatique des connexions à MySQL peut remplir le tampon et ainsi rendre les temps d'exécution de requêtes plus longs.<br /><br />
 
Une mauvaise configuration de la base de données peut aussi être à l'origine du phénomène : les jointures de tables et les indexs (key) peuvent générer ces erreurs - par exemple dans le cas d'une table ne possédant pas de clé primaire.
 
Une mauvaise configuration de la base de données peut aussi être à l'origine du phénomène : les jointures de tables et les indexs (key) peuvent générer ces erreurs - par exemple dans le cas d'une table ne possédant pas de clé primaire.
 
<br /><br />
 
<br /><br />
Enfin, il ne faut pas exclure l'hypothèse d'une attaque sur votre serveur, générant de nombreuses requêtes qui finiront par s'entasser et donc dépasser la limite de temps d'exécution définie par long_query_time.
+
Enfin, il ne faut pas exclure l'hypothèse d'une attaque sur votre {{Template:Serveur}}, générant de nombreuses requêtes qui finiront par s'entasser et donc dépasser la limite de temps d'exécution définie par long_query_time.
 
==Conclusion== <!--T:3-->
 
==Conclusion== <!--T:3-->
Les logs sont désormais actifs et devraient vous permettre d'analyser au mieux les actions lentes effectuées sur votre base de données, vous permettant de diagnostiquer des problèmes de performances, de programmation ou d'attaques ciblées. En outre, vous avez désormais un meilleur visuel sur les actions effectuées sur votre serveur de base de données.
+
Les logs sont désormais actifs et devraient vous permettre d'analyser au mieux les actions lentes effectuées sur votre base de données, vous permettant de diagnostiquer des problèmes de performances, de programmation ou d'attaques ciblées. En outre, vous avez désormais un meilleur visuel sur les actions effectuées sur votre {{Template:Serveur}} de base de données.
  
 
<!--T:4-->
 
<!--T:4-->
Ligne 74 : Ligne 99 :
  
 
<!-- Placez ci-dessous la ou les catégories auxquelles se rapporte votre article. Ex: [[Catégorie:Contribuer]] [[Catégorie:Linux]] -->
 
<!-- Placez ci-dessous la ou les catégories auxquelles se rapporte votre article. Ex: [[Catégorie:Contribuer]] [[Catégorie:Linux]] -->
 +
[[Catégorie:Linux]]
 +
[[Catégorie:Serveur VPS]]
 +
[[Catégorie:Serveur dédié]]

Version actuelle datée du 27 janvier 2021 à 11:36

fr:Activer les logs de requêtes lentes MySQL he:לאפשר שאילתות איטי יומני MySQL ro:Enable lent întrebare MySQL busteni ru:Включение медленных запросов MySQL журналы pl:Po wolnych zapytań MySQL logi ja:低速のクエリ MySQL のログを有効にします。 ar:تمكين الاستعلامات بطيئة سجلات الخلية zh:启用慢速查询 MySQL 日志 de:Langsame Abfragen MySQL Protokolle aktivieren nl:Langzame vragen MySQL logboeken inschakelen it:Attivare slow query log di MySQL pt:Permitir consultas lentas os logs do MySQL es:Permitir consultas lentas de MySQL logs en:Enable slow queries MySQL logs

Introduction

Il peut arriver de recevoir des alertes de monitoring concernant des requêtes mysql lentes (slow queries) : ces erreurs sont produites quand le temps d'exécution d'une requête MySQL dépasse le temps alloué défini par la variable MySQL long_query_time. Ces erreurs pouvant être produites par différents facteurs, nous verrons ici comment activer les logs de ces erreurs afin de les analyser et les corriger.

Déroulé

Veuillez noter qu'activer les logs de slow queries peut ralentir votre serveur, étant donné que des écritures seront effectuées en même temps que l'exécution des requêtes lentes.

Vérifier que les logs ne sont pas déjà actifs

Afin de nous assurer que les logs de slow queries ne sont pas déjà activés, connectez-vous en SSH à votre machine et entrez dans le shell MySQL :

mysql -u utilisateur -p
[mot de passe]


Une fois dans le shell MySQL, entrez la commande suivante afin d'avoir la liste de toutes les variables et leurs valeurs définies :

show variables;


Naviguez jusqu'à constater dans la colonne de gauche la variable "slow_query_log" : sur 'ON', les logs sont actifs. Sur 'OFF', nous devons les activer.

Slow-queries-1.png

Activer et configurer les logs slow queries

Toujours dans le shell MySQL, entrez la commande suivante :

set global slow_query_log = 'ON';


Vous pouvez également définir un chemin vers le répertoire où seront stockés les logs de requêtes lentes :

set global slow_query_log_file ='/var/log/mysql/slow-query.log';


Enfin, définissez un temps minimum alloué à chaque requête pour vous assurer de ne pas avoir de faux-positifs de requêtes lentes : 10 secondes est une valeur correcte, 20 secondes est conseillé si il arrive que votre serveur faiblisse face au nombre de requêtes et de visiteurs (cette variable est de base définie à 10 secondes) :

set global long_query_time = '20';


Finalement, vérifiez que les changements ont bien été pris en compte par la commande suivante :

show variables like '%slow%';


Analyser les logs

En cas d'alertes de monitoring vous indiquant que des requêtes sont notées comme slow, vous pouvez désormais analyser les logs de slow_queries afin de comprendre la raison de ces lenteurs :

# montrera les requêtes en temps réel
tail -f /var/log/mysql/slow-query.log # défini dans notre exemple ci-dessus
# sortie complète du fichier
cat /var/log/mysql/slow-query.log
# naviguer de haut en bas
less /var/log/mysql/slow-query.log


Explication du phénomène

Comme expliqué au début de cette fiche, les slow queries sont dédfinie par le temps d'exécution défini des requêtes ; si la requête met plus de temps que la limite définie par long_query_time à être exécutée, elle est définie comme slow querie. La première raison de l'obtention de requêtes longues peut être le mauvais paramétrage de la variable MySQL "long_query_time" ; un temps maximum trop faible pourra mettre certaines requêtes un peu lourdes directement en slow alors qu'elles sont en réalité tout à fait normales.

Une autre raison peut être liée à l'utilisation de MySQL par un service externe ; dans le cas d'un site internet par exemple, une mauvaise programmation n'intégrant pas de fermeture automatique des connexions à MySQL peut remplir le tampon et ainsi rendre les temps d'exécution de requêtes plus longs.

Une mauvaise configuration de la base de données peut aussi être à l'origine du phénomène : les jointures de tables et les indexs (key) peuvent générer ces erreurs - par exemple dans le cas d'une table ne possédant pas de clé primaire.

Enfin, il ne faut pas exclure l'hypothèse d'une attaque sur votre serveur, générant de nombreuses requêtes qui finiront par s'entasser et donc dépasser la limite de temps d'exécution définie par long_query_time.

Conclusion

Les logs sont désormais actifs et devraient vous permettre d'analyser au mieux les actions lentes effectuées sur votre base de données, vous permettant de diagnostiquer des problèmes de performances, de programmation ou d'attaques ciblées. En outre, vous avez désormais un meilleur visuel sur les actions effectuées sur votre serveur de base de données.



Cet article vous a semblé utile ?

0



Vous n'êtes pas autorisé à publier de commentaire.