Pergunta

No meu MagentoEE 14.0.1, quando tento reindexar catálogo_produto_flat assim:

php indexer.php --reinex catalog_product_flat

Depois de vários minutos, recebo este erro:

Product Flat Data index process unknown error:
exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/www/magento/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /var/www/magento/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /var/www/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /var/www/magento/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /var/www/magento/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /var/www/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `enterpr...', Array)
#5 /var/www/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `enterpr...', Array)
#6 /var/www/magento/lib/Zend/Db/Adapter/Abstract.php(753): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#7 /var/www/magento/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(380): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select))
#8 /var/www/magento/app/code/core/Mage/Core/Model/Abstract.php(225): Mage_Core_Model_Resource_Db_Abstract->load(Object(Enterprise_Mview_Model_Metadata), '10', NULL)
#9 /var/www/magento/app/code/core/Enterprise/Index/Model/Action/Abstract.php(167): Mage_Core_Model_Abstract->load('10')
#10 /var/www/magento/app/code/core/Enterprise/Catalog/Model/Index/Action/Product/Flat/Refresh.php(136): Enterprise_Index_Model_Action_Abstract->_setChangelogValid()
#11 /var/www/magento/app/code/core/Enterprise/Mview/Model/Client.php(109): Enterprise_Catalog_Model_Index_Action_Product_Flat_Refresh->execute()
#12 /var/www/magento/app/code/core/Enterprise/Catalog/Model/Index/Observer/Flat.php(78): Enterprise_Mview_Model_Client->execute('enterprise_cata...')
#13 /var/www/magento/app/code/core/Mage/Core/Model/App.php(1338): Enterprise_Catalog_Model_Index_Observer_Flat->processShellProductReindexEvent(Object(Varien_Event_Observer))
#14 /var/www/magento/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Enterprise_Catalog_Model_Index_Observer_Flat), 'processShellPro...', Object(Varien_Event_Observer))
#15 /var/www/magento/app/Mage.php(451): Mage_Core_Model_App->dispatchEvent('catalog_product...', Array)
#16 /var/www/magento/shell/indexer.php(167): Mage::dispatchEvent('catalog_product...')
#17 /var/www/magento/shell/indexer.php(212): Mage_Shell_Compiler->run()
#18 {main}

Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/www/magento/lib/Zend/Db/Statement/Pdo.php:234
Stack trace:
#0 /var/www/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#1 /var/www/magento/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#2 /var/www/magento/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 /var/www/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `enterpr...', Array)
#4 /var/www/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `enterpr...', Array)
#5 /var/www/magento/lib/Zend/Db/Adapter/Abstract.php(753): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#6 /var/www/magento/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(380): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select))
#7 /var/www/magento/app/code/core/Mage/Core/Model/Abstract.php(225): Mage_Core_Model_Resource_Db_Abstract->load(Object(Enterprise_Mview_Model_Metadata), '10', NULL)
#8 /var/www/magento/app/code/core/Enterprise/Index/Model/Action/Abstract.php(167): Mage_Core_Model_Abstract->load('10')
#9 /var/www/magento/app/code/core/Enterprise/Catalog/Model/Index/Action/Product/Flat/Refresh.php(136): Enterprise_Index_Model_Action_Abstract->_setChangelogValid()
#10 /var/www/magento/app/code/core/Enterprise/Mview/Model/Client.php(109): Enterprise_Catalog_Model_Index_Action_Product_Flat_Refresh->execute()
#11 /var/www/magento/app/code/core/Enterprise/Catalog/Model/Index/Observer/Flat.php(78): Enterprise_Mview_Model_Client->execute('enterprise_cata...')
#12 /var/www/magento/app/code/core/Mage/Core/Model/App.php(1338): Enterprise_Catalog_Model_Index_Observer_Flat->processShellProductReindexEvent(Object(Varien_Event_Observer))
#13 /var/www/magento/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Enterprise_Catalog_Model_Index_Observer_Flat), 'processShellPro...', Object(Varien_Event_Observer))
#14 /var/www/magento/app/Mage.php(451): Mage_Core_Model_App->dispatchEvent('catalog_product...', Array)
#15 /var/www/magento/shell/indexer.php(167): Mage::dispatchEvent('catalog_product...')
#16 /var/www/magento/shell/indexer.php(212): Mage_Shell_Compiler->run()
#17 {main}

Next exception 'Enterprise_Index_Model_Action_Exception' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/www/magento/app/code/core/Enterprise/Catalog/Model/Index/Action/Product/Flat/Refresh.php:140
Stack trace:
#0 /var/www/magento/app/code/core/Enterprise/Mview/Model/Client.php(109): Enterprise_Catalog_Model_Index_Action_Product_Flat_Refresh->execute()
#1 /var/www/magento/app/code/core/Enterprise/Catalog/Model/Index/Observer/Flat.php(78): Enterprise_Mview_Model_Client->execute('enterprise_cata...')
#2 /var/www/magento/app/code/core/Mage/Core/Model/App.php(1338): Enterprise_Catalog_Model_Index_Observer_Flat->processShellProductReindexEvent(Object(Varien_Event_Observer))
#3 /var/www/magento/app/code/core/Mage/Core/Model/App.php(1317): Mage_Core_Model_App->_callObserverMethod(Object(Enterprise_Catalog_Model_Index_Observer_Flat), 'processShellPro...', Object(Varien_Event_Observer))
#4 /var/www/magento/app/Mage.php(451): Mage_Core_Model_App->dispatchEvent('catalog_product...', Array)
#5 /var/www/magento/shell/indexer.php(167): Mage::dispatchEvent('catalog_product...')
#6 /var/www/magento/shell/indexer.php(212): Mage_Shell_Compiler->run()
#7 {main}
PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/www/magento/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /var/www/magento/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /var/www/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /var/www/magento/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /var/www/magento/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /var/www/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT RELEASE_...', Array)
#5 /var/www/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT RELEASE_...', Array)
#6 /var/www/magento/app/code/core/Enterprise/Index/Model/Resource/Helper/Mysql4.php(56): Varien_Db_Adapter_Pdo_Mysql->query('SELECT RELEASE_...', Array)
#7 /var/www/magento/app in /var/www/magento/lib/Zend/Db/Statement/Pdo.php on line 234
PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/www/magento/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /var/www/magento/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /var/www/magento/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /var/www/magento/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /var/www/magento/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /var/www/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT RELEASE_...', Array)
#5 /var/www/magento/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT RELEASE_...', Array)
#6 /var/www/magento/app/code/core/Enterprise/Index/Model/Resource/Helper/Mysql4.php(56): Varien_Db_Adapter_Pdo_Mysql->query('SELECT RELEASE_...', Array)
#7 /var/www/magento/app in /var/www/magento/lib/Zend/Db/Statement/Pdo.php on line 234

Nenhum erro adicional no log de erros system.log, exceção.log ou php.No log de erros do MySQL, encontro este aviso, que é impresso alguns segundos antes:

Aborted connection 23157178 to db: 'magento_magento' user: 'usert' host: 'xx.xx.xx.xx' (Got timeout reading communication packets)

Tentei definir max_allowed_packet como 64 MB na configuração do MySQL, mas não obtive resultado.

Alguma ideia, por favor?

EDITAR1:

Eu tentei aumentar o wait_timeout para 3600 e max_allowed_packet para 999999488 (Bytes) mas o erro persiste.

Além disso, se eu executar algum outro índice como catalog_url_produto, catalogsearch_fulltext ou catalog_product_attribute, estes foram executados com sucesso.

Não sei se tem que servir, mas o banco de dados tem replicação.eu tenho um Mestre e um Escravo, e o erro "Tempo limite para leitura de pacotes de comunicação" aparece no log do Mestre.

Foi útil?

Solução 2

Bom, não sei se o erro foi 100% resolvido ou não.Mas com base no que você me contou aqui e neste post:https://dba.stackexchange.com/questions/40899/mysql-error-reading-communication-packets, faço essas alterações no arquivo de configuração do MySQL:

max-allowed-packet              = 1024M
wait-timeout                    = 7200
innodb-log-file-size            = 2047M
innodb-log-buffer-size         = 8M
innodb-log-buffer-size         = 32M

E isso no meu MySQL:

SET GLOBAL wait_timeout = 7200;
SET GLOBAL max_allowed_packet = 1000000000;
SET GLOBAL net_buffer_length = 1000000;

E depois disso, pude reindexar tudo com sucesso.não sei se de fato tamanho do buffer de log innodb e tamanho do buffer de log innodb eram o truque.

Vou continuar monitorando, obrigado.

Outras dicas

Isso se deve principalmente a qualquer um dos dois motivos abaixo

  1. O servidor expirou e fechou a conexão.
    consertar:tente aumentar o wait_timeout variável no seu mysqld my.cnf/my.ini arquivo de configuração.
  2. O servidor descartou um pacote incorreto ou muito grande.
    consertar :aumentar o limite máximo de tamanho de pacote aumentando o valor de max_allowed_packet em my.cnf/my.ini arquivo.

Você já aumentou max_allowed_packet para 64 MB, tente aumentá-lo para 128 ou mais também, se não funcionar.
Parece ser apenas uma questão de recursos.
Verifique também se a indexação não está quebrada por qualquer outro motivo, apenas para ter certeza de que o processo de indexação está correto.

Tente aumentar max_allowed_packet para mais até resolver o seu problema.e reinicie o mysql após alterar esta configuração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top