Configuração de Web Services Escaláveis (Cálculo Assíncrono)
Nesta tela é configurada a maneira como os serviços escaláveis serão distribuídos para processamento nas diversas conexões disponíveis.
Funcionalidades
Descrição (Serviço)
Exibe o nome do serviço escalável que será configurado.
Conexões
Número de conexões que poderão ser utilizadas para efetuar o processamento deste serviço.
Mínimo/Lote
Número mínimo de itens a processar (normalmente colaboradores) que devem existir para que seja aberta uma nova conexão.
Por exemplo, tem-se definidas duas conexões e um mínimo/lote de 30. Se forem calculados 40 colaboradores, primeiramente o sistema distribui 30 colaboradores para a primeira conexão. Como o número de colaboradores restantes (10 neste caso) é menor do que o mínimo informado, não será criada uma nova conexão e todos os colaboradores serão calculados por uma única conexão.
Notas
- A configuração do escalonamento do cálculo da apuração somente pode ser feita quando o banco de dados utilizado é SQL Server;
- O sistema não gera a tabela Contabilização (R048CON) para a contabilização escalonada. A tabela Contabilização (R048CON) é gerada quando a contabilização é finalizada, desta forma a tabela só é populada se contabilizado em uma só instância, pois em várias instâncias, não é possível saber quando o processo foi concluído;
- Nos processos escalonados, o servidor processa vários colaboradores ao mesmo tempo, em sistemas diferentes pode haver 3 executáveis fazendo a contabilização, e cada um com uma abrangência.
Alterando o padrão de escalonamentos
Para alterar o padrão de escalonamentos que podem ser suportados pelo Glassfish, deve-se acessar no painel de administração do Glassfish e, em seguida:
- Acessar Configurations > server-config > EJB Container;
- Na guia EJB Container, campo Maximum Pool Size, aumentar o valor padrão;
- Na guia MDB Settings, campo Maximum Pool Size, aumentar o valor padrão;
- Clicar no botão Salvar; e
- Reiniciar os web services.
Observação
A quantidade de blocos não é livre, pois depende de recursos do ambiente. Sendo assim, deve ser alterada criteriosamente.
Para escalonamentos de 45 blocos, coloque o valor 45 ou, então, caso mais de uma filial apure ao mesmo tempo (no caso de apurações descentralizadas por filial), coloque no máximo 90 blocos no campo Maximum Pool Size em ambas as guias EJB Container e MDB Settings.
Atenção: Deve ser feita a análise de ambiente antes de adicionar mais de 90 blocos.
Fatores que devem ser considerados para configuração do cálculo assíncrono
A quantidade de instâncias de middleware disponíveis para execução: Essa informação é verificada na Central de Configuração (SeniorConfigCenter) (disponível no diretório de instalação), menu Middleware > Balanceamento de Carga.
No campos Por servidor, Quantidade e Mínimo livre do item BrowserAccess e WindowsAccess devemos considerar:
Qual a quantidade de instâncias disponíveis para este servidor? Além de verificar a quantidade de instâncias parametrizadas, deve-se considerar as instâncias que podem já estar em uso no momento do cálculo, onde:
- Em que horário o cálculo é executado?
- Além desse cálculo, é executado outro cálculo assíncrono?
- Existem processos automáticos, web services, ou outros recursos que utilizem instâncias?
Sendo assim, na avaliação deste item deve-se considerar o total de instâncias livres, e não a quantidade configurada na Central de Configuração (SeniorConfigCenter) O ideal é que esse tipo de processamento seja efetuado em um momento em que outros recursos/rotinas não estejam sendo executados.
Existe alguma instância configurada especificamente para algum recurso? Ou seja, se a instância estiver reservada para o recurso, ela não será utilizada no cálculo assíncrono.
- Quantidade de colaboradores por empresa: Quantos colaboradores serão calculados pela rotina?
- Quantidade de colaboradores a serem processadas por instância: Quantos colaboradores precisa/ pretende-se calcular por instância?
- Expectativa de tempo de execução: Em quanto tempo eu preciso efetuar o cálculo (Tempo médio 3 segundos por colaborador).
Observamos que esse item pode variar de cliente para cliente, onde deve-se considerar regras customizadas, recursos disponíveis, entre outros.
Ponto de atenção para o campo Mínimo/Lote, esse item deve ser parametrizado considerando a quantidade de colaboradores processados naquele momento, pois a configuração errada dele pode ocasionar falhas na rotina.
- Cliente possui duas empresas, onde processa primeiro a empresa 1 e, em seguida, a empresa 2.
Empresa 1: 1.000 colaboradores
Empresa 2: 10.000 colaboradores
Instâncias do Middleware disponíveis: 30
Configuração
- Conexões: 20
- Mínimo/Lote: 1
Com isso:
- Cálculo 1 (empresa 1), irá utilizar o recurso de 20 instâncias, processando 50 colaboradores em cada uma;
- Cálculo 2 (empresa 2), irá utilizar o recurso de 20 instâncias, processando 500 colaboradores em cada uma.
Nesse cenário, como existem apenas 30 instâncias disponíveis (visto que 20 já estão sendo utilizadas no cálculo 1), o segundo cálculo irá iniciar 10 instâncias e criará uma fila com as outras 10 instâncias faltantes.
Esse é um dos problemas causados por configuração incorreta, onde as instâncias não são processadas, em consequências, os colaboradores também não são calculados. Além do cálculo não ser dividido da melhor forma (pois na empresa 1, processa 50 colaboradores por instância, e na 2 processa 500).
Sendo assim, a configuração ideal neste caso seria:
- Conexões: 30
- Mínimo/Lote: 367
Onde:
Deve-se verificar o número total de colaboradores a serem processados simultaneamente:
Empresa 1 (1.000) + Empresa 2 (10.000) = 11.000 Colaboradores
Dividir o valor por quantidade de instâncias disponíveis:
11.000 / 30 = 366,66
Com isso:
- Cálculo 1: Utilizaria 1 instância com 367 e outra instância com 633 (como o mínimo não é atingido, ele não sobe a 3ª instância);
- Cálculo 2: 26 Instâncias com 367, 1 instância com 458
Considerando um tempo médio de 3 segundos por colaborador, este cálculo seria executado em torno de 20 minutos.
- No segundo exemplo, ao possuir 60 instâncias disponíveis.
Neste caso, utiliza-se o cálculo por grupo de empresas, onde o Grupo possuí as seguintes empresas:
Empresa 1: 500 colaboradores
Empresa 2: 4.000 colaboradores
Empresa 3: 12.000 colaboradores
Empresa 4: 20.000 colaboradores
Total: 36500 Colaboradores.
Configuração ideal:
36500 / 60 = 608,33
Conexões: 60
Mínimo/Lote: 609
Considerando um tempo médio de 3 segundos por colaborador, este cálculo seria executado em torno de 30 minutos.
Importante
- As instâncias que ficam na fila aguardam para execução. Porém, caso não sejam iniciadas, são descartadas.
- Uma requisição é descartada quando o tempo de tentativa de iniciar uma instância ultrapassar o tempo limite (processo conhecido como Timeout/Timed Out).
- Esse valor é configurável pelo SeniorConfigCenter, através do menu Middleware > Web Services > Tempo máximo de espera por resposta ao consumir um web service e funciona da seguinte forma:
- A metade do tempo configurado neste campo é referente à tentativa de início da instância que irá processar a requisição;
- O total do tempo é referente ao tempo que a instância tem para retornar o resultado da execução.
Caso esteja configurado para 30 minutos, o Middleware irá manter a requisição na fila por 15 minutos. Caso a requisição seja atendida dentro desse período, a instância terá 30 minutos para retornar o resultado.
- A ordem de atendimento das instâncias é sempre atender o que está há mais tempo na fila, ou seja, as primeiras a entrarem na fila serão as primeiras a serem atendidas, caso haja disponibilidade de instâncias no Middleware.
- Caso não atenda o primeiro tempo para ser alocada, a requisição é retirada da fila de processamento. Por isso as divisões do escalonamento do cálculo precisam ser configuradas considerando:
- a quantidade de colaboradores;
- quais processos serão executados simultaneamente; e
- quantas instâncias totais o ambiente possui.
Serviços
Os seguintes itens de serviço escalável estão disponíveis:
Gestão do Ponto - Cálculo de apuração
Permite configurar a quantidade de conexões e o mínimo/lote para o processo de cálculo e apuração do Gestão do Ponto. Ela está disponível apenas quando o Gestão do Ponto está habilitado na proprietária.