Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 33231|Répondre: 6

[Source] MySQL analyse une forte utilisation du processeur dans des situations de forte concurrence

[Copié le lien]
Publié sur 05/09/2017 20:23:59 | | | |


Récemment, pour diverses raisons, le nombre de visites sur le site web a fortement augmenté, et d’après le chiffre, on peut voir que le nombre de connexions simultanées dépasse les 1 200

Parce que la configuration du serveur est très faible, 1 cœur et 2G de la mémoire, et que le site web est très lent à accéder quand il y a beaucoup de monde


Nous utilisons la commande top pour vérifier, mysql prend beaucoup de CPU et de mémoire, et d’autres processus sont php-fpm qui prennent CPU et mémoire, ce qui n’est pas très élevé

Si mysql fonctionne normalement, c’est que certaines instructions SQL dans PHP causent des problèmes de découverte, et l’utilisateur racine entre dans la gestion mysql
mysql -u racine -p
Saisissez le mot de passe, puis la commande suivante




Avec cette commande, on peut voir que la base de données exécute constamment des opérations de suppression avec des conditions where.



pre_k_spider cette table est une table qui enregistre les accès spider, vraisemblablement causés par un plugin installé

On peut voir qu’pre_k_spider table compte plus de 100 000 enregistrements, et que la requête prend 33 secondes



Vide définitivement cette table, puis va dans le background de gestion pour fermer les plug-ins pertinents de la table et la restaurer à la normale !









Précédent:Service de reconnaissance de code de vérification du marché cloud Alibaba Cloud
Prochain:mysql 5.6.21 pour consulter le fichier de configuration my.cnf
 Propriétaire| Publié sur 06/09/2017 09:32:56 |


Aujourd’hui, le site est de nouveau bloqué, et un grand nombre de personnes dorment sont trouvées

Causes du sommeil :

1 Le programme client n’a pas appelé mysql_close() avant de sortir.

2 Le client dormait plus de wait_timeout ou interactive_timeout secondes sans émettre de requêtes au serveur.

3 Le programme client s’est arrêté brusquement en plein transfert de données

Si le nombre de processus de veille dans la même période est trop élevé, et que le nombre total de connexions dans d’autres états dépasse la valeur max_connection, alors MySQL ne peut plus traiter de requêtes sauf l’utilisateur root, ne peut établir de connexion avec aucune requête, ou se bloque directement

Solution :

1. Premièrement, vérifiez si votre programme utilise la méthode pconnect, et deuxièmement, vérifiez si le mysql_close() est appelé à temps avant l’exécution de la page. Essayez de ne pas utiliser la méthode pconnect, c’est-à-dire d’utiliser mysql_connect. Lorsque le programme est exécuté, le mysql_close doit être explicitement invoqué

2. Ajouter wait_timeout et interactive_timeout à my.cnf, mettre la valeur plus petite, par défaut la valeur de wait_timeout est 8 heures, vous pouvez la changer en 1 heure, ou une demi-heure. De cette façon, mysql coupera les connexions mortes plus rapidement. Empêcher le nombre total de connexions de dépasser la valeur max_connection.

wait_timeout trop volumineux provoquera la libération d’un grand nombre de processus SLEEP dans MySQL à temps, ce qui ralentira les performances du système, mais si les paramètres sont trop petits, vous pouvez rencontrer des problèmes tels que « MySQL a disparu »

Réglez la valeur de max_connection à une valeur plus élevée, mais ce n’est évidemment pas approprié, plus vous avez de connexions, plus cela met de pression sur votre serveur. En fait, ces connexions sont redondantes, et les éliminer dès que possible est la meilleure politique.

3. Analyser la requête SQL du système étape par étape, trouver le SQL trop lent et l’optimiser



1) interactive_timeout :
Signification du paramètre : Le nombre de secondes que le serveur attend pour une activité avant de couper la connexion interactive. Un client interactif est défini comme un client qui utilise CLIENT_INTERACTIVE option dans mysql_real_connect().
Paramètre par défaut : 28800 secondes (8 heures)

(2) wait_timeout :
Signification du paramètre : Le nombre de secondes que le serveur attend l’activité avant de fermer la connexion non interactive.
Lorsque le thread démarre, la valeur de la wait_timeout de session est initialisée en fonction de la valeur globale wait_timeout ou globale interactive_timeout, selon le type de client (défini CLIENT_INTERACTIVE les options de connexion de mysql_real_connect()).
Paramètre par défaut : 28800 secondes (8 heures)

Il existe une limite supérieure au nombre maximal de connexions que MySQL Server peut supporter, car chaque connexion est établie et consomme de la mémoire, donc nous attendons des clients qu’ils se déconnectent et libèrent la mémoire occupée après leur connexion à MySQL Server pour gérer l’opération correspondante. Si votre MySQL Server a un grand nombre de connexions inactives, non seulement ils consommeront de la mémoire en vain, mais si les connexions continuent de s’accumuler et de s’ouvrir, ils atteindront finalement le nombre maximal de connexions dans MySQL Server, ce qui signalera l’erreur « trop de connexions ». La définition de la valeur de la wait_timeout doit être jugée selon le fonctionnement du système. Après que le système a fonctionné pendant un certain temps, vous pouvez vérifier l’état de la connexion du système actuel via la commande montrer la liste des processs, si vous trouvez un grand nombre de processus connectés en état de veille, cela signifie que le paramètre est trop grand, et vous pouvez effectuer les ajustements appropriés pour effectuer des ajustements plus petits.


Commande SQL :



Cette méthode de modification est dansAprès avoir relancé le service mysql, il sera invalide, il est donc préférable de configurer ces deux propriétés dans le fichier de configuration mysql.

Modifie le fichier my.cnf sous Linux :




Publié sur 06/09/2017 11:15:15 |
Je dois prendre un serveur maître-esclave
 Propriétaire| Publié sur 06/09/2017 11:15:49 |
vrchary a posté le 6-09-2017 à 11:15
Je dois prendre un serveur maître-esclave

raison de la configuration du serveur : la configuration est faible   
 Propriétaire| Publié sur 06/09/2017 13:47:56 |
Résolu le problème de « mysql-bin.000001 » qui prenait beaucoup de place
http://www.itsvse.com/thread-2694-1-1.html
(Source : Architecte)

Après avoir installé MySQL avec des ports, au bout d’un moment j’ai constaté que l’espace /var était insuffisant, j’ai vérifié et constaté que mysql-bin.000001, mysql-bin.000002 et d’autres fichiers prenaient de la place, alors à quoi servent ces fichiers ? Il s’agit du journal d’opérations de la base de données, comme METTRE à jour une table ou SUPPRIMER certaines données, même si l’instruction ne correspond pas aux données, cette commande sera stockée dans le fichier journal, y compris le temps d’exécution de chaque affirmation, qui sera également enregistré.

Cela est principalement fait pour les deux objectifs suivants :
1 : Récupération des données
Si votre base de données a un problème et que vous avez déjà une sauvegarde, vous pouvez consulter le fichier journal pour découvrir quelle commande a causé votre problème et trouver un moyen de récupérer la perte.
2 : Synchronisation des données entre serveurs maître-esclave
Toutes les opérations sur le serveur principal sont enregistrées dans un journal que le serveur esclave peut utiliser pour garantir que les deux sont synchronisés.

Ferme simplement le journal


 Propriétaire| Publié sur 09/10/2017 14:33:30 |
mysqld occupe trop le CPU sous Windows



Solution : Optimiser l’instruction SQL
Publié sur 30/12/2021 23:15:36 |
Soutenez-le !!!!!!!!!!!!!!!!
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com