12002 - CSM Center: In-use connections equal max-pool-size and expired max-wait-time
Problema: Descrição: Quando há um grande número de acessos nos dispositivos, o serviço CSM Center trava. No log da csm center, é apresentado a mensagem Caused by: javax.resource.spi.ResourceAllocationException: Error in allocating a connection. Cause: In-use connections equal max-pool-size and expired max-wait-time. Cannot allocate more connections.
Quando ocorre / onde se aplica: Cada vez que a CSM Center recebe uma mensagem de evento, ela abre uma conexão com o banco de dados, executa tudo o que tiver que executar, e ao final fecha a conexão com o banco. Quando a CSM Center recebe muitas mensagens de evento ao mesmo tempo, ela cria várias instâncias para tratar essas mensagens, e cada instância abre uma conexão com o banco de dados para isso. Quando há muitos eventos para serem tratados ao mesmo tempo, consequentemente muitas conexões com o banco são abertas, ultrapassando o limite de 20 conexões que há no pool do Glassfish.
Solução:
Solução: É preciso aumentar o número de instâncias que são criadas para tratar mensagens. Abaixo segue o procedimento:
- Acessar o glassfish admin pelo endereço: http://localhost:4949/
Usuário: admin
Senha: adminadmin
- Acessar o menu Resources/JDBC/JDBC Connection Pools/com.senior.seguranca.csmcenter.ConnectionPool aba General
- Alterar as configurações:
- Initial and Minimum Pool Size: Para um valor entre '8' e '20'
- Maximum Pool Size: Para um valor entre '20' e '40'
- Max Wait Time: Para um valor entre '60000' e '120000' (60 e 120 segundos de time out)
- Acessar o menu Resources/JDBC/JDBC Connection Pools/com.senior.seguranca.csmcenter.ConnectionPool aba Advanced
- Alterar as configurações:
- Statement Timeout: Valor entre '50' e '60'
- 'Connection Leak Timeout' e 'Connection Leak Timeout' para valores entre '180' e '200'
- Connection Leak Timeout: Marcar esta opção
- Creation Retry Attempts: 5
- Retry Interval: 10
- Se o banco de dados for Oracle, incluir as propriedades no ConnectionPool e JVM:
- Acessar o menu Resources/JDBC/JDBC Connection Pools/com.senior.seguranca.csmcenter.ConnectionPool aba Additional Properties
- Adicionar a propriedade:
Name: oracle.jdbc.ReadTimeout | Value: 55000
- Acessar o menu Configurations / server-config / System Properties
- Adicionar a propriedade: Instance Variable Name: oracle.jdbc.ReadTimeout | Default Value: 55000
PS. o serviço da csm center deve estar iniciado.
Público: Interno, canais/consultores, clientes
Quando ocorre / onde se aplica: Cada vez que a CSM Center recebe uma mensagem de evento, ela abre uma conexão com o banco de dados, executa tudo o que tiver que executar, e ao final fecha a conexão com o banco. Quando a CSM Center recebe muitas mensagens de evento ao mesmo tempo, ela cria várias instâncias para tratar essas mensagens, e cada instância abre uma conexão com o banco de dados para isso. Quando há muitos eventos para serem tratados ao mesmo tempo, consequentemente muitas conexões com o banco são abertas, ultrapassando o limite de 20 conexões que há no pool do Glassfish.
Solução:
Solução: É preciso aumentar o número de instâncias que são criadas para tratar mensagens. Abaixo segue o procedimento:
- Acessar o glassfish admin pelo endereço: http://localhost:4949/
Usuário: admin
Senha: adminadmin
- Acessar o menu Resources/JDBC/JDBC Connection Pools/com.senior.seguranca.csmcenter.ConnectionPool aba General
- Alterar as configurações:
- Initial and Minimum Pool Size: Para um valor entre '8' e '20'
- Maximum Pool Size: Para um valor entre '20' e '40'
- Max Wait Time: Para um valor entre '60000' e '120000' (60 e 120 segundos de time out)
- Acessar o menu Resources/JDBC/JDBC Connection Pools/com.senior.seguranca.csmcenter.ConnectionPool aba Advanced
- Alterar as configurações:
- Statement Timeout: Valor entre '50' e '60'
- 'Connection Leak Timeout' e 'Connection Leak Timeout' para valores entre '180' e '200'
- Connection Leak Timeout: Marcar esta opção
- Creation Retry Attempts: 5
- Retry Interval: 10
- Se o banco de dados for Oracle, incluir as propriedades no ConnectionPool e JVM:
- Acessar o menu Resources/JDBC/JDBC Connection Pools/com.senior.seguranca.csmcenter.ConnectionPool aba Additional Properties
- Adicionar a propriedade:
Name: oracle.jdbc.ReadTimeout | Value: 55000
- Acessar o menu Configurations / server-config / System Properties
- Adicionar a propriedade: Instance Variable Name: oracle.jdbc.ReadTimeout | Default Value: 55000
PS. o serviço da csm center deve estar iniciado.
Público: Interno, canais/consultores, clientes