Árvore de páginas

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:

Inicial50
Máximo1000
Em espera5



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.

Todas estas threads estão inicialmente "em espera" e somente quando uma conexão com TOTVS | DBAccess for realizada é que uma delas será utilizada 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 threads 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 threads em espera e não será possível estabelecer novas conexões com ele.


Importante

Caso o limite de conexões seja atingido, a seguinte mensagem será observada no log do TOTVS | DBAccess:

[FATAL][DBACCESS] [tTOPSockServer::checkInstances] TOO MANY Connection Threads - Available (0) Count (1000) Starting (50)




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.




  • Sem rótulos