Maison > Article > base de données > Dépannage des problèmes de blocage Redis
Redis est une architecture monothread et toutes les opérations sont effectuées dans un thread principal. Donc une fois Redis bloqué, ce sera un cauchemar. Examinons ensuite le problème de blocage avec Redis. Comment dépanner et résoudre.
Utilisation déraisonnable de la structure de données ou de l'API Redis
Il existe des objets volumineux et des commandes complexes et supérieures sur des objets volumineux
1. Effectuez une opération hgetall ou del sur un hachage contenant des dizaines de millions d'éléments. Des opérations similaires entraîneront un blocage de Redis
2 Pour des objets aussi volumineux, vous pouvez utiliser redis-cli -. h {host} -p {port} bigkeys à afficher. Cependant, cette commande ne peut interroger que la plus grande clé parmi
dans un certain type. Si vous souhaitez interroger plusieurs. Vous pouvez modifier le code source de Redis-cli (le code source de Redis est C). Si vous ne souhaitez pas modifier le code source, vous pouvez également utiliser le scan pour le compléter.
Vous devez faire attention à la commande Scan. Cette commande ne peut analyser les données que sur un seul Redis. Si vous êtes un cluster, vous devez l'exécuter une fois sur chaque machine. Mais si vous utilisez un client open source (par exemple : le client Lettuce de Java), cela vous aidera déjà à implémenter la commande scan pour analyser l'intégralité du cluster.
3. Divisez ensuite le gros objet. La répartition spécifique dépendra de l’entreprise.
L'utilisation du processeur de Redis est proche de 100 %
1 L'esclave synchronise les données de l'hôte. Après avoir reçu le fichier rdb, l'esclave charge les données depuis le disque
2. Le maître-esclave conserve les données.
3. Si l'utilisation du processeur atteint 100 %, il se peut que le nombre de visites professionnelles réelles soit vraiment important. Un seul Redis peut gérer plus de 60 000 requêtes par seconde. Pour le moment, nous ne pouvons faire qu'une expansion horizontale
4. Si le nombre d'opérations Redis par seconde n'est que de quelques centaines ou milliers et que le CPU est toujours très élevé, il est possible d'utiliser des commandes avec un niveau élevé complexité de l'algorithme. Par exemple hgetall. Une autre possibilité est que la mémoire soit sur-optimisée. Cette situation n'a pas encore été rencontrée, mais elle est également envisagée.
Concurrence CPU
1 Redis est une application gourmande en CPU et ne convient pas au déploiement avec d'autres services gourmands en CPU.
2. Dans l'environnement de production, la configuration de l'un de nos serveurs est un processeur logique à 32 cœurs et 256 Go de mémoire. Il serait inutile de déployer un seul Redis sur chaque machine. Par conséquent, plusieurs Redis peuvent être déployés sur une seule machine. Le processus Redis est généralement lié au CPU. Mais lors de la génération de fichiers RDB ou de persistance AOF, des processus enfants seront générés. De cette façon, le processus enfant et le processus parent seront en compétition pour le CPU. Ainsi, lors de l'activation de la persistance ou du nœud maître. Il n'est pas recommandé de lier le CPU
Échange de mémoire
Redis est une base de données en mémoire et toutes les données sont placées en mémoire. Par conséquent, il est fortement recommandé de ne pas activer l'échange de mémoire
Problèmes de réseau
Si le délai de synchronisation maître-esclave du réseau est important, la machine esclave se déconnectera et se reconnectera souvent . S'il est déconnecté depuis longtemps. En conséquence, la machine esclave sera entièrement synchronisée lorsqu'elle se reconnectera à la machine maître. À ce moment, la machine maître et la machine esclave seront affectées
Pour plus de connaissances sur Redis, veuillez faire attention à. la colonne tutoriel d'introduction à Redis.
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!