7280 - CSM Center - Perda de comunicação com o Banco de Dados
Problema: Realizado pings entre a máquina da CSM Center e a máquina do banco de dados, foi constatado que em média 10% dos pacotes estavam sendo perdidos. Isto demonstra uma rede instável entre os dois servidores.
Por algum motivo não conhecido, o servidor do banco de dados não responde algumas requisições da CSM Center. A CSM Center não estava com um timeout de requisição configurado, fazendo com que ela aguardasse eternamente por uma resposta do banco de dados. Neste caso, por algum problema de rede ou do banco, esta resposta não chegava na CSM Center.
Quando ocorre / onde se aplica: Esta situação começou a acontecer quando ocorreu um erro na storage da CSM Center.
Solução: 1. Atualizar driver JDBC do Oracle.
- Removido driver antigo: glassfish/domains/csmcenter/lib/ojdbc14.jar
- Colocado driver novo: glassfish/domains/csmcenter/lib/ojdbc6.jar (buscar no site da oracle)
2. Definir um timeout de 50 segundos para as consultas ao banco de dados.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Advanced
- Statement Timeout: 50
3. Definir um timeout de 55 segundos para o socket de comunicação com o banco de dados.
3.1. No pool de conexões.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Additional Properties
- Name: oracle.jdbc.ReadTimeout | Value: 55000
3.2. Na JVM.
- http://SERVIDOR:4949/
- Configurations> server-config> System Properties
- Instance Variable Name: oracle.jdbc.ReadTimeout | Default Value: 55000
4. Configurar um timeout de 180 segundos para conexões que estão fora do pool.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Advanced
- Leak Timeout: 180
5. Remover a validação de conexão feita pelo GlassFish, pois esta rotina do GlassFish não respeita os timeouts definidos nos itens 1 e 2.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- General
- Connection Validation: Desmarcado
6. Configurado retry de conexão feita pelo GlassFish para cinco vezes, com intervalos de 10 segundos.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Advanced
- Connection Retry Attempts: 5
- Retry Interval: 10
Por algum motivo não conhecido, o servidor do banco de dados não responde algumas requisições da CSM Center. A CSM Center não estava com um timeout de requisição configurado, fazendo com que ela aguardasse eternamente por uma resposta do banco de dados. Neste caso, por algum problema de rede ou do banco, esta resposta não chegava na CSM Center.
Quando ocorre / onde se aplica: Esta situação começou a acontecer quando ocorreu um erro na storage da CSM Center.
Solução: 1. Atualizar driver JDBC do Oracle.
- Removido driver antigo: glassfish/domains/csmcenter/lib/ojdbc14.jar
- Colocado driver novo: glassfish/domains/csmcenter/lib/ojdbc6.jar (buscar no site da oracle)
2. Definir um timeout de 50 segundos para as consultas ao banco de dados.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Advanced
- Statement Timeout: 50
3. Definir um timeout de 55 segundos para o socket de comunicação com o banco de dados.
3.1. No pool de conexões.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Additional Properties
- Name: oracle.jdbc.ReadTimeout | Value: 55000
3.2. Na JVM.
- http://SERVIDOR:4949/
- Configurations> server-config> System Properties
- Instance Variable Name: oracle.jdbc.ReadTimeout | Default Value: 55000
4. Configurar um timeout de 180 segundos para conexões que estão fora do pool.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Advanced
- Leak Timeout: 180
5. Remover a validação de conexão feita pelo GlassFish, pois esta rotina do GlassFish não respeita os timeouts definidos nos itens 1 e 2.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- General
- Connection Validation: Desmarcado
6. Configurado retry de conexão feita pelo GlassFish para cinco vezes, com intervalos de 10 segundos.
- http://SERVIDOR:4949/
- Resources> JDBC> Connection Pools> com.senior.seguranca.csmcenter.ConnectionPool
- Advanced
- Connection Retry Attempts: 5
- Retry Interval: 10