Lentidão em conexões, JDBC?

Meu programa funciona perfeitamente no local host, mas quando eu coneceto no host da web fica muito lento, o que pode ser?
Estou usando o DAO para concetar, ou seja toda vez que vou fazer uma consulta ou verificação eu conecto e quando termina desconecto.
Para cada classe ele conecta e desconecta umas 5 vezes ou mais.
O que pode ser?

Para conectar uso JDBC com o driver “mysql-connector-java-5.1.18”

Opa,

Rodrigo, tb utilizo MySQL5 e por consequencia o mesmo driver.
Utilizo DaoFactory, com suas interfaces, classes abstratas e por ai vai.
Não há problemas de lentidão.

  • Quantos usuários acessam simultaneamente a aplicação?
  • Ao abrir e utilizar a conexão, é utilizado o “finally” para finalizar Connection, PreparedStatement e ResultSet?
  • Você está realizando testes na rede interna e externa? Verique o tráfego na rede…
  • Verifique o tempo de execução da query tb…

Enfim, existem inúmeras possibilidades.
Utilizar DaoFactory, JDBC e MySQL 5 não tornam o ambiente lento.

Fala Bruno blz?
O BD fica num Servidor host de web

Meus métodos são assim:

public void insere(Servico servico){ conectar(); //método de conexão try { comando.executeUpdate(" ...."); System.out.println("Inserida!"); } catch (SQLException e) { imprimeErro("Erro ao inserir Servico ", e.getMessage()); /// método que imprime os erros } finally { fechar(); //fecha a conexão } }

Método de conexão:

private void conectar() { try { con = ConFactory.conexao(URL, NOME, SENHA, ConFactory.MYSQL); comando = con.createStatement(); System.out.println("Sistema OK! - Conectado"); } catch (ClassNotFoundException e) { imprimeErro("Erro ao carregar o driver", e.getMessage()); } catch (SQLException e) { imprimeErro("Erro ao conectar", e.getMessage()); } }

método de finalizar conexão private void fechar() { try { comando.close(); con.close(); System.out.println("Conexão Fechada"); } catch (SQLException e) { imprimeErro("Erro ao fechar conexão", e.getMessage()); } }

e não tem tráfico na rede! pois é so eu que estou mechendo aqui

É cara, pelo fonte n tem nada errado.
Vc vai ter q entrar em contato com a empresa que hospeda o servidor mesmo.

Não sei se vai te auxiliar ai meu, mas segue um fonte que utilizei pra um trabalho a algum tempo.
Esse fonte utiliza conexão com o MySQL5 e faz todo o esquema de DaoFactory.
Ta meio similar com oq vc fez, mas se quiser realizar alguns testes ae, segue.
Foi utilizado em rede externa e funcionou normalmente.

Eu faria 3 testes:

  • Criaria uma Main simples, sem DaoFactory, interfaces e tal e realizaria um teste para verificar a performance;
  • Instalaria o MySQL5 em uma VM com a rede em modo bridge e IP fixo, alteraria a URL do driver para o IP desta máquina, verificando perfomance;
  • Verificaria portas, firewall, memória, HD, processamento, banda, trafego e utilização com a empresa que hospeda o servidor.

Vou pegar horário de almoço agora, e quando voltar eu dou uma olhada!
no server tem o Postegree tbm.

Só uma coisa, vc tinha mencionado em visualizar o tempo de execução da query, como que imprimo isso?
Abração e t+

long tempoInicio = System.currentTimeMillis();
// query
long tempoFim = System.currentTimeMillis();
System.out.println(tempoFim - tempoInicio);

fiz uns testes de tempo aqui e o resultado foi o seguinte

A query está demorando cerca de 220 ms (tempo rasoável)
Já a conexão demora 2654 ms em média, e eu conecto e desconecto ne quase todos os métodos, esse é o grande vilão!

estava pensando se tem como fazer uma conexão geral pra classe em vez de fazer em cada método