O TOTVS | DBAccess possui um mecanismo de controle dos Processos de Conexão.
Através do TOTVS | DBMonitor, na guia Configurações > sub-guia Avançado, é possível configurar a quantidade inicial e máxima de threads que o TOTVS | DBAccess tratará.
Além disso, considerando os limites configurados, é possível determinar o valor incremental de threads que devem ser adicionadas ao "pool de conexões".
Essa configuração é útil para ambientes em que o número de conexões ativas e simultâneas é alto, e a rotatividade de conexões e desconexões também é alta.
Por exemplo: se temos uma média diária de 500 conexões simultâneas com o TOTVS | DBAccess e uma alta rotatividade de conexões e desconexões, onde mais de 10 conexões ocorrem ao mesmo tempo, podemos configurar o número de threads inicial para 400 e o número de threads em espera para 20.
Com isto, após iniciar o TOTVS | DBAccess, se 200 novas conexões forem realizadas ao mesmo tempo, haverá threads suficientes aguardando para receber todas essas requisições, e a partir de 400 conexões simultâneas, sempre serão mantidas 20 threads adicionais em espera e prontas para aceitar novas conexões.
Caso de uso
Com o objetivo de elucidar seu uso e função, vejamos o case a seguir.
Para o case, vamos assumir os valores:
Inicial | 50 |
Máximo | 1000 |
Em espera | 5 |
Com esta configuração, ao iniciar o serviço do TOTVS | DBAccess, 50 threads serão instanciadas e ficarão disponíveis para aceitar conexões.
Todos estes processos estão inicialmente "em espera" e somente quando uma conexão com TOTVS | DBAccess for realizada é que um destes processos será utilizado e passará a atender exclusivamente àquela conexão, diminuindo o número de threads em espera.
A cada nova conexão realizada com o TOTVS | DBAccess, ele verifica se a quantidade de threads em espera está dentro do parâmetro configurado e, caso esteja abaixo desta configuração, ele vai automaticamente instanciar novas threads, para sempre manter 10 threads livres e em espera.
O número total de threads utilizadas, mais o número de threads em espera, nunca ultrapassará o número máximo configurado.
Supondo que já existem 990 conexões ativas com o TOTVS | DBAccess e existem 10 threads em espera, já temos o total de 1000 threads. Caso mais uma conexão seja estabelecida, uma thread em espera será alocada, restando apenas 9 threads em espera.
Como a soma de threads ativas (991) mais o número de processos em espera (9) já atingiu o limite configurado de 1000 threads, o TOTVS | DBAccess não vai instanciar mais threads e colocá-las em espera.
Se 1000 conexões forem estabelecidas com o TOTVS | DBAccess, não haverá mais processos em espera e não será possível estabelecer novas conexões com ele.
Observações
- Conforme as conexões vão sendo encerradas, as threads em uso também serão "fechadas" e voltarão ao estado de "em espera"
- O TOTVS | DBAccess sempre tentará manter disponível o valor configurado em threads sempre (que disponível) 10 threads "em espera".
- Quando o número de threads ativas, mais o número de threads em espera, for menor que o número de threads inicial, o TOTVS | DBAccess alocará automaticamente mais threads para o estado de "em espera", sempre considerando o limite máximo definido.