Lentidão em conexões, JDBC?

7 respostas
R

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”

7 Respostas

B

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.

R

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()); } }

R

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

B

É 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.
R

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+

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

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

Criado 17 de janeiro de 2012
Ultima resposta 17 de jan. de 2012
Respostas 7
Participantes 2