domingo, 4 de outubro de 2009

Falha no carregamento dos módulos:MySQL server has gone away

Num dos nossos sites Joomla, começou a aparecer a mensagem

Falha no carregamento dos módulos:MySQL server has gone away
várias vezes, ao tentar montar a tela de um dos artigos.

Isso me parece um problema de time-out. O Script PHP fica esperando o MySQL terminar uma operação, neste caso um join de duas tabelas razoavelmente pequenas, e se cansa de esperar.

Uma primeira tentativa de reparar e otimizar as tabelas resultou em melhorias temporárias. Rapidamente o problema voltou.

Como as tabelas eram bem estáticas, procurei ativar o cache do ambiente Joomla, nas esperança de que o sistema conseguisse fazer com uso das computações anteriores. Novamente, os resultados foram temporários e as mensagens voltaram a aparecer em seguida.

A sugestão de trocar o engine do MySQL de MyISAM para InnoDB com o comando

ALTER TABLE my_table ENGINE = InnoDB;
se mostrou bem mais efetivo, fazendo a mensagem sumir até o momento. Realmente, o problema voltou depois de algum tempo.

Verificando melhor, percebi que o processamento no MySQL era causado no processo de proteger os endereço de eMail contra Spammers, mascarando o endereço em código Java, usando o plugin Content - Email Cloaking . Para cada eMail, o pluging gerava um código Java, com base em alguns controles armazenados em duas tabelas no MySQL que precisavam ser unidas usando Join ! Desligando o plugin, conseguimos evitar o tempo excessivo de processamento.

Um comentário:

Daniel Silveira da Silva disse...

Muito bom! - Vou ver se o problema volta depois de algum tempo. Mas vlw pela dica!