Question

Après avoir déménagé à un nouveau serveur, je reçois le problème de plantage MySQL [1] une fois par jour, ce qui me vient à l'e-mail et ennuyeux sans parler de l'impact potentiel. Tous les conseils sur la façon de déboguer ce problème?

Il est évident que l'accident se produit sur $schedule->save() alors j'ai essayé de l'envelopper avec un try ... catch mais cela n'a pas aidé

SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Trace:
#0 /var/www/vhosts/site/store/lib/Zend/Db/Adapter/Pdo/Abstract.php(305): PDO->beginTransaction()
#1 /var/www/vhosts/site/store/lib/Zend/Db/Adapter/Abstract.php(495): Zend_Db_Adapter_Pdo_Abstract->_beginTransaction()
#2 /var/www/vhosts/site/store/lib/Varien/Db/Adapter/Pdo/Mysql.php(219): Zend_Db_Adapter_Abstract->beginTransaction()
#3 /var/www/vhosts/site/store/app/code/core/Mage/Core/Model/Resource/Abstract.php(76): Varien_Db_Adapter_Pdo_Mysql->beginTransaction()
#4 /var/www/vhosts/site/store/app/code/core/Mage/Core/Model/Abstract.php(313): Mage_Core_Model_Resource_Abstract->beginTransaction()
#5 /var/www/vhosts/site/store/app/code/core/Mage/Cron/Model/Observer.php(125): Mage_Core_Model_Abstract->save()
#6 /var/www/vhosts/site/store/app/code/core/Mage/Core/Model/App.php(1338): Mage_Cron_Model_Observer->dispatch(Object(Varien_Event_Observer))
#7 /var/www/vhosts/site/store/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Cron_Model_Observer), 'dispatch', Object(Varien_Event_Observer))
#8 /var/www/vhosts/site/store/app/Mage.php(447): Mage_Core_Model_App->dispatchEvent('default', Array)
#9 /var/www/vhosts/site/store/cron.php(46): Mage::dispatchEvent('default')
#10
{main}

Paramètres Délai d'attente:

mysql> show global variables like '%timeout%';
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 10       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 30       |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 3600     |
+----------------------------+----------+
10 rows in set (0.00 sec)
Était-ce utile?

La solution

Comme d'autres l'ont dit qu'il est déclenché probablement par un long script en cours d'exécution. Tout script qui prend beaucoup de temps à courir sans utiliser la base de données peut potentiellement de délai d'attente.

J'ai eu auparavant. Nous avons un script qui se connecte à un serveur distant, télécharge quelques centaines de fichiers xml, Parsis et les convertit en un fichier .csv pour l'importation via le haut dans le module Magento ImportExport. Nous avons un module d'enregistrement personnalisé, ce qui nous permet de suivre ce qui est arrivé avec nos routines. La première chose que la classe le fait, est d'ajouter une ligne à cette table de journal pour dire la routine a commencé. Il faut alors 5-10 minutes pour récupérer les fichiers XML. Après avoir téléchargé les fichiers, il tente d'écrire une autre entrée de journal pour dire qu'il est fini. Depuis la connexion MySQL est ouvert depuis le premier événement de journal et n'a pas été utilisé depuis, MySQL a fermé la connexion car il n'a reçu aucune requête pour plus que le délai d'attente.

Autres conseils

Dans votre essai de /etc/mysql/my.cnf augmenter la valeur pour max_allowed_packet

Par exemple.

max_allowed_packet = 256M

Ensuite, redémarrez MySQL.

Si vous me demandez, ce n'est pas une bonne idée de garder une connexion ouverte mysql pendant des heures. Ainsi, l'alternative est de vérifier, wether la connexion existe toujours, sinon, ouvrir un nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top