enterprise_refresh_index Conexão MySQL adormecida


8

Há momentos em que o indexador que é executado pelo cron parece ficar travado no MySQL, pois as conexões de dormir podem ser vistas. O indexador é executado por várias horas e isso realmente não está sendo executado. Eu procurei por isso, mas não encontrei nenhum relacionado. Alguém que possa lançar uma luz? Possivelmente configuração do servidor ou bug do Magento?

Respostas:


0

Você está usando conexões persistentes? Quantas conexões de sono você possui? Qual é a quantidade máxima de conexões que o DB Server está configurado para permitir?

Para verificar quantas conexões de suspensão você acabou de executar:

show full processlist;

Para ver o max_connections, execute:

show variables like 'max_connections';

Eu acho que as conexões de dormir não são o problema, o mysqld atingirá o tempo limite de conexões de sono com base em 2 valores:

interactive_timeout wait_timetout

Ambos são 28800 segundos (8 horas) por padrão.

Você pode definir essas opções no my.cnf (a localização desse arquivo é diferente em diferentes sistemas operacionais e bancos de dados, percona, mysql, etc.)

Consulte também esta resposta dos Administradores do banco de dados: https://dba.stackexchange.com/a/1559 e se você quiser saber mais sobre como depurar a origem das conexões inativas, verifique este excelente artigo: https: // www. percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/

"Se suas conexões forem persistentes (abertas via mysql_pconnect), você poderá diminuir esses números para algo razoável como 600 (10 min) ou até 60 (1 min). Ou, se seu aplicativo funcionar perfeitamente, você pode deixar o padrão. Isso é você decide."

Tente executar o indexador no console para ver se ele gera algum erro:

php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}

Infelizmente, ainda estamos recebendo esse problema. Eu executo o comando show full process e ele exibe instruções SQL muito longas com os IDs de entidade listados.
precisa saber é o seguinte

0

configure seu servidor mysql definindo um tempo limite mais curto wait_timeouteinteractive_timeout

mysql> mostra variáveis ​​como "%timeout%";

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| connect_timeout          | 5     |
| delayed_insert_timeout   | 300   |
| innodb_lock_wait_timeout | 50    |
| interactive_timeout      | 28800 |
| net_read_timeout         | 30    |
| net_write_timeout        | 60    |
| slave_net_timeout        | 3600  |
| table_lock_wait_timeout  | 50    |
| wait_timeout             | 28800 |
+--------------------------+-------+
9 rows in set (0.00 sec)

Definido com:

set global wait_timeout=3;
set global interactive_timeout=3;

(e também definido no seu arquivo de configuração, para quando o servidor reiniciar)

Mas você está tratando os sintomas em vez da causa subjacente - por que as conexões estão abertas? Se o script PHP terminar, eles não devem fechar? Verifique se o servidor da web não está usando o pool de conexões ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.