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.