
Mudei um servidor de produção para OpenVZ, algo que já fiz muitas vezes antes, só que desta vez impactou o comportamento de transação de certas operações.
Todas as minhas tabelas são innoDB. Não alterei nenhum parâmetro do estado pronto para uso.
Certas solicitações ao JBoss resultam em transações que levam exatamente 10 segundos para serem concluídas, mas apenas de forma intermitente. Geralmente eles são extremamente rápidos.
Não consigo encontrar nada em my.cnf ou nas variáveis do Mysql que corresponda a esse atraso de 10 segundos. Posso ver as transações aparecendo no Innotop, mas se eu mudar para o modo Q - consulta, não consigo ver a consulta completa pressionando f.
Não parece haver nenhum tipo de reversão, pois mesmo com atraso, a funcionalidade não é quebrada. O JBoss tem um tempo limite de transação de 300 segundos conforme a configuração padrão.
Não vejo limites atingidos em /proc/user_beancounters (o OpenVZ rastreia quando as VMs excedem suas cotas de recursos para aqueles que não sabem o que é isso).
Estou lutando para identificar de onde vem esse gargalo.
Responder1
OK, posso responder isso agora.
Eu li sobre como o Mysql lida com conexões e aparentemente ele sempre tenta uma pesquisa reversa, a menos que você diga para não fazê-lo, e expira após 10 segundos.
Não sei por que o tempo limite da minha rede estava expirando intermitentemente, mas adicionando:
pular-nome-resolver
para my.cnf, o problema desapareceu.
Na verdade, não faz sentido para mim porque o Jboss usa conexões em pool, que deveriam permanecer ativas devido a um volume de atividade regular, mas deixa pra lá.