2 votes

TRUNCATE très lent accompagné de "Server seems busy" sur le journal httpd

J'ai cette table très simple avec seulement 35 lignes sur 5 colonnes simples (clé primaire sur id auto incrément, titre (varchar), un bool, et 2 datetime). Comme nous travaillons en équipe, nous importons des données de Google Docs, nous les reformulons en SQL pour faire un TRUNCATE->LOCK TABLE WRITE->INSERT INTO (plusieurs lignes)->UNLOCK TABLE en une fois. Sur d'autres tables plus grandes et plus compliquées, cela fonctionne très bien, l'ensemble du processus se termine en une seconde. Mais sur celle-ci, il faut toujours 5 à 7 minutes pour terminer. Le problème est que cela déclenche des verrous sur d'autres tables, et le système est pratiquement hors service pendant cette période.

Pendant que le système est en panne, j'ai capturé la >SHOW FULL PROCESSLIST ; et j'ai découvert que : - le TRUNCATE prend beaucoup de temps, avec le code d'état "checking permissions" pendant plus de 200 secondes. - pour une raison quelconque, lorsque ce problème se produit, le journal httpd affiche un "server seems busy..." et Apache se bloque sur toutes les instances frontales.

J'ai essayé de chercher des cas similaires sur le web en vain. Cela nous sauverait vraiment la vie si quelqu'un pouvait nous donner un avis utile sur ce cas... Merci !

  • Serveur DB : m2.2xlarge instance @ EC2
  • Serveurs frontaux : instances m1.large @ EC2
  • Version de MySQL : 5.0.77
  • Client GUI : phpmyadmin 3.2.3
  • Type de stockage DB : MyISAM

1voto

Gary Points 1410

Cela semble très étrange, avez-vous essayé de faire un DROP TABLE et un CREATE comme solution de contournement ? Cela pourrait vous aider à isoler le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X