2017-09-09 1 views
0

Je cours une grande application Web Zend Framework avec 5 bases de données, indépendantes les unes des autres, réparties sur 2 serveurs de base de données fonctionnant sur Mysql 5.6.36 - CentOS7 avec 16gb RAM 8 core chaque. Toutefois, si l'un des deux serveurs de base de données cesse de répondre en raison d'une requête ralentie, les utilisateurs de l'autre serveur ne peuvent pas accéder à l'application Web. La seule façon d'activer l'application est de redémarrer mysql sur ce serveur. J'essaie différentes choses sans succès. La chose étrange est que si j'éteins l'un des serveurs, le système continue à fonctionner correctement.Arrêt de la base de données multiples Zend Framework Travailler avec une requête lente

Répondre

0

Il est difficile d'offrir une réponse significative, parce que vous ne nous avez donné aucune information sur vos tables ou vos requêtes (en fait, vous n'avez pas posé de question, vous venez de nous raconter une histoire! -).

Je vais vous suggérer que vous utilisez MyISAM pour une ou plusieurs de vos tables. Cela signifie qu'une requête d'un client verrouille la (les) table (s) interrogée (s) et bloque les mises à jour simultanées d'autres clients.

Pour confirmer que vous avez ce problème, utilisez SHOW PROCESSLIST sur chacun de vos deux serveurs de base de données au moment où vous rencontrez la contention entre les applications Web. Vous pourriez voir un tas de requêtes bloquées en attente d'un verrou (il peut apparaître dans la liste des processus avec l'état de "Mise à jour").

Si tel est le cas, vous pourriez avoir plus de chance si vous modifiez le moteur de stockage de vos tables en InnoDB. Voir https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html