La requête lente Redis fait référence à une requête avec un temps d'exécution de commande relativement long. Le journal des requêtes lentes est le serveur Redis qui calcule le temps d'exécution de chaque commande avant et après l'exécution de la commande lorsqu'elle dépasse un certain seuil. , le journal est enregistré, le journal enregistre l'heure à laquelle la requête lente s'est produite, ainsi que l'heure d'exécution, la commande spécifique et d'autres informations.
Recommandé : "Tutoriel Redis"
Une requête lente, comme son nom l'indique, est une requête relativement lente, mais où exactement est-elle lente ? Tout d'abord, examinons l'ensemble du processus d'exécution de la commande Redis :
Dans la définition d'une requête lente, la période pendant laquelle les statistiques sont relativement lentes fait référence à l'étape d'exécution de la commande. L'absence de requêtes lentes ne signifie pas que le client n'a pas de problèmes de délai d'attente. Il peut y avoir des retards dans la transmission réseau ou il peut y avoir davantage de commandes en file d'attente.
En raison du mécanisme de mise en file d'attente d'exécution des commandes dans Redis, les requêtes lentes provoqueront un blocage en cascade des autres commandes. Par conséquent, lorsqu'un délai d'attente de requête se produit sur le client, il est nécessaire de vérifier s'il existe une requête lente. à ce moment-là, afin d'analyser la raison pour laquelle le blocage de la cascade de commandes est dû à une requête lente.
Le journal des requêtes lentes est un journal dans lequel le serveur Redis calcule le temps d'exécution de chaque commande avant et après l'exécution de la commande. Lorsqu'elle dépasse un certain seuil, elle est enregistrée. Le journal enregistre l'heure à laquelle la requête lente s'est produite, ainsi que l'heure d'exécution, les commandes spécifiques et d'autres informations. Il peut être utilisé pour aider le personnel de développement, d'exploitation et de maintenance à localiser les requêtes lentes qui existent dans le système.
Vous pouvez utiliser la commande slowlog get
pour obtenir des journaux de requêtes lentes. Vous pouvez également ajouter un nombre après slowlog get
pour spécifier le nombre de journaux de requêtes lentes à obtenir. Par exemple, pour obtenir 3 journaux de requêtes lentes. :
> slowlog get 3 1) 1) (integer) 6107 2) (integer) 1616398930 3) (integer) 3109 4) 1) "config" 2) "rewrite" 2) 1) (integer) 6106 2) (integer) 1613701788 3) (integer) 36004 4) 1) "flushall" 3) 1) (integer) 6105 2) (integer) 1608722338 3) (integer) 20449 4) 1) "scan" 2) "0" 3) "MATCH" 4) "*comment*" 5) "COUNT" 6) "10000"
Dans l'exemple ci-dessus, nous pouvons voir que chaque journal de requêtes lentes se compose de 4 attributs :
Vous pouvez utiliser la commande slowlog len
pour obtenir la longueur du journal des requêtes lentes, par exemple :
> slowlog len (integer) 121
Dans l'exemple ci-dessus, il existe actuellement 121 journaux de requêtes lentes dans Redis.
Vous pouvez utiliser la commande slowlog reset
pour effacer les journaux de requêtes lentes, par exemple :
> slowlog len (integer) 121 > slowlog reset OK > slowlog len (integer) 0
Comme mentionné ci-dessus, une requête lente nécessite les deux configurations suivantes :
Redis fournit deux paramètres : slowlog-log-slower-than et slowlog-max-len Ensuite, nous présenterons ces deux paramètres en détail.
slowlog-log-slower-than est utilisé pour spécifier le seuil de temps d'exécution de la commande Lorsque le temps d'exécution de la commande dépasse ce seuil, elle le fera. être enregistré. Son unité est la microseconde (1 seconde = 1 000 millisecondes = 1 000 000 microsecondes) et la valeur par défaut est 10 000 microsecondes. Si slowlog-log-slower-than est défini sur 0, toutes les commandes seront enregistrées. Si slowlog-log-slower-than est défini sur moins de 0, aucune commande ne sera enregistrée dans le journal.
Dans un environnement de production réel, cette configuration doit être ajustée en fonction de la concurrence Redis. Étant donné que Redis utilise un seul thread pour répondre aux commandes, si le temps d'exécution de la commande est supérieur à 1 000 microsecondes, Redis peut prendre en charge jusqu'à moins de 1 000 OPS. Par conséquent, il est recommandé que Redis soit défini sur 1 000 microsecondes pour. scénarios à haute concurrence.
slowlog-max-len est utilisé pour spécifier le nombre maximum de journaux de requêtes lentes à stocker. En fait, Redis utilise une liste pour stocker les journaux de requêtes lentes, et slowlog-max-len est la longueur maximale de cette liste. Lorsqu'une nouvelle commande satisfait à la condition de requête lente, elle est insérée dans cette liste. Lorsque la liste des journaux de requêtes lentes atteint la longueur maximale, la première commande insérée sera supprimée de la liste. Par exemple, slowlog-max-len est défini sur 10. Lorsque la 11ème commande est insérée, la première commande de la liste est d'abord supprimée, puis la 11ème commande est ajoutée à la liste.
L'enregistrement des requêtes lentes signifie que Redis tronquera les commandes longues et n'occupera pas une grande quantité de mémoire. Dans un environnement de production réel, afin de réduire le risque de suppression des requêtes lentes et de localiser plus facilement les requêtes lentes, il est recommandé d'ajuster la longueur du journal des requêtes lentes pour qu'elle soit plus grande. Par exemple, il peut être réglé sur 1000 ou plus.
Il existe deux manières de modifier la configuration dans Redis :
slowlog-log-slower-than 1000 slowlog-max-len 1200
config set
命令动态修改。比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OK
如果要Redis把配置持久化到本地配置文件,需要执行config rewrite
命令。
慢查询指的是命令执行时长比较长的查询。通过slowlog get命令获取慢查询日志;通过slowlog len命令获取慢查询日志的长度;通过slowlog reset命令清理慢查询日志。通过slowlog-log-slower-than配置命令执行时长的阈值;通过slowlog-max-len配置慢查询日志最多存储的条数
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!