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