MySQL ne libère pas de descripteurs de files temporaires

Depuis quelques jours, nous avons rencontré de sérieux problèmes avec notre installation MySQL: MySQL continue d'ouvrir des files temporels (comportement normal), mais ces files ne sont jamais diffusés. La conséquence est que, finalement, l'espace disque est épuisé et nous devons redémarrer le service et nettoyer / tmp manuellement.

En utilisant lsof, nous voyons quelque chose comme ceci:

mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (deleted) mysqld 16866 mysql 6u REG 8,3 0 707 /tmp/ibf5adsT (deleted) mysqld 16866 mysql 7u REG 8,3 0 728 /tmp/ibGjPRyW (deleted) mysqld 16866 mysql 8u REG 8,3 0 5678 /tmp/ibMQDLMZ (deleted) mysqld 16866 mysql 13u REG 8,3 0 5679 /tmp/ibQAnM42 (deleted) 

Peut-être que ce n'est pas lié, mais lorsque nous éteignons le server, les files sont finalement libérés et nous pouvons voir les avertissements suivants dans le journal MySQL:

 121029 7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1333 user: 'xxx' 121029 7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1156 user: 'yyy' 121029 7:44:27 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 1151 user: 'zzz' 

où 'xxx', 'yyy' et 'zzz' sont des users mysql distincts (et les seuls 3 users avec des connections actives à la database).

Nous avons quelques théories:

  • Il y a un problème dans le operating system, qui maintient les gestionnaires de files ouverts. Est-il possible que l'opération de "suppression" de l'OS bloque les threads jusqu'à l'arrêt? Cela peut expliquer l'avertissement lors de l'arrêt et le fait que les files sont finalement supprimés lorsque le process est décédé.

  • Jusqu'à présent, les jeux de données étaient si petits que les files temporaires étaient relativement faibles et il suffisait de time pour libérer les poignées de files sans épuisement de l'espace disque.

Nous utilisons Mysql 5.5 sur RHEL 6.2 avec le kernel par défaut.

2 Solutions collect form web for “MySQL ne libère pas de descripteurs de files temporaires”

Eh bien … Ce n'est pas vraiment une solution, mais je considère la fin de la search.

Il semble que ce soit un bug dans MySQL. Nous l'avons trouvé à travers ce bug qui semble être un double de celui-ci

Comme solution de rechange, pour éviter de générer tant de files temporels, nous avons augmenté binlog_cache_size à une valeur raisonnable pour nous (après avoir analysé l'application un peu et vérifier la taille des files avec lsof). Si vous souhaitez explorer davantage, vous pouvez find un article sur d'autres options pour résoudre ce problème .

J'espère que cela aide quelqu'un;)

Pour la reference, il existe un autre bug très similaire: http://bugs.mysql.com/bug.php?id=66237 . Et celui-ci semble même pas corrigé en 5.5.

  • Déconnecter un câble réseau différent de l'option VMware "Connecté"?
  • Pourquoi mon disque dur USB externe refuse-t-il de démonter après le transfert de gros files tar?
  • Déménagement / Ajout d'un location de rlocation supplémentaire - Redhat 5
  • RHEL 5 Hyper-V Guest - Impossible de synchroniser avec NTP après la mise à niveau du noyau
  • Comment faire pour que l'ordinateur Linux soit répertorié sous Windows Server Active Directory Computers
  • Yum problèmes de mise à jour sur AWS avec les exigences manquantes et duplicate sendmail
  • Comment savoir à quelle reference berkley db openldap se réfère?
  • Rétrécir une partition LVM montée
  • Comment empêcher les users d'étendre leur window de connection valide
  • Configurer le domaine externe vers Openshift
  • Accidentally run chmod 775 -R / (pas ./) sur le server linux (RedHat)
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.