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?

user1240207
fonte

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}
lloiacono
fonte
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 ...

Charlie
fonte