Beaucoup de "Query End" indique en MySQL, toutes les connexions en quelques minutes
Ce matin, j'ai remarqué que notre serveur MySQL charge allais haut dans le ciel. Max doit être de 8, mais il a frappé plus de 100 à un moment donné. Quand j'ai vérifié la liste des processus, j'ai trouvé énormément de requêtes de mise à jour (simple, incrémentation d'une "hitcounter") qui étaient en query end
état. Nous n'avons pas les tuer (bon, on pourrait, mais ils sont restés dans la killed
état indéfiniment) et notre site à l'arrêt.
Nous avons eu des tonnes de problèmes de redémarrer le service, et à force de tuer des processus. Quand nous l'avons fait, nous avons été en mesure d'obtenir MySQLd revenir, mais le processus a commencé à construire de nouveau immédiatement. Pour autant que nous sommes conscients, aucune configuration n'a été changé à ce point.
Donc, nous avons changé innodb_flush_log_at_trx_commit
de 2 à 1 (à noter que nous avons besoin de l'ACIDE conformité) dans l'espoir que cela permettrait de résoudre le problème et définir les connexions en PHP/PDO être persistant. Cela semblait fonctionner pour une heure ou deux, et puis les connexions a commencé à courir à nouveau.
Heureusement, j'ai configuré un serveur esclave d'un il ya quelques mois et a été en mesure de promouvoir et à prendre le relais pour l'instant, mais j'ai besoin de comprendre ce qui s'est passé et comment l'arrêter, puisque le serveur esclave est nettement insuffisante par rapport à la maîtrise, j'ai donc besoin de revenir bientôt.
Quelqu'un a des idées? Se pourrait-il que quelque chose a besoin de compensation? Je ne sais pas quoi, peut-être que le binaire journaux ou quelque chose? Toutes les idées? Il est extrêmement important que nous pouvons obtenir ce serveur en tant que maître, le plus tôt possible, mais franchement, je n'ai aucune idée de où chercher et tout ce que j'ai essayé jusqu'à présent a seulement abouti à une solution temporaire.
Aider! 🙂
source d'informationauteur Ant The Knee
Vous devez vous connecter pour publier un commentaire.
Je vais répondre à ma propre question ici. J'ai vérifié la taille d'une partition avec un simple
df
commande et là, j'ai pu voir que /var était de 100%. J'ai trouvé une archive que quelqu'un avait laissé qui fut de 10 go en taille. Supprimé, a commencé à MySQL, a couru unPURGE LOGS BEFORE '2012-10-01 00:00:00'
requête pour effacer une charge d'espace et réduit le /var/lib/mysql de la taille des répertoires de 346GB à 169GB. Changé de maître et tout fonctionne à nouveau magnifique.À partir de ce que j'ai appris que notre journal, les fichiers sont très gros, TRÈS rapidement. Je vais donc établir un programme d'entretien pour non seulement conserver les fichiers journaux, mais aussi pour m'alerter lorsque nous nous approchons d'une partition complète.
J'espère que c'est utile à quelqu'un dans le futur qui bute sur ce avec le même problème. Vérifiez votre disque dur! 🙂
Nous avons eu un problème très similaire, où l'mysql processlist a montré que presque toutes nos connexions ont été coincés dans la requête "fin" de l'état. Notre problème est également lié à la réplication et de la rédaction de la binlog.
Nous avons changé le sync_binlog variable de 1 à 0, ce qui signifie qu'au lieu de rinçage binlog les changements sur le disque à chaque commit, il permet au système d'exploitation, afin de décider quand fsync() à la binlog. Que entièrement résolu la requête "fin" problème pour nous.
Selon ce poste de Tapis Kindahlécrit à la binlog ne sera pas tant d'un problème dans la version 5.6 de MySQL.
Dans mon cas, c'était révélateur de maxing sur les I/O sur le disque. J'avais déjà réduit fsyncs à un minimum, donc ce n'était pas cela. Un autre symptôme est "log*.tokulog*" les fichiers commencent à s'accumuler, car le système ne peut pas rattraper toutes les écritures.