Carga Automatica de Servidores Tuxedo
Publicado por rst em 4/jan/2012 no TUXEDO | 0 comentário
A capacidade do Tuxedo de gerenciar as instâncias de servidores ativas é possivelmente um dos recursos mais mal explorados pelos clientes com que tive contato, isso por que, a configuração do recurso não é obvia como a maioria dos demais e depende do entendimento de outros recursos para seu uso.
O bom funcionamento de um ambiente é (entre outras coisas) diretamente ligado a capacidade desse ambiente atender a um volume de trabalho que lhe é conferido, quando capacidade de resposta é referência ao número disponível de um determinado recurso, temos nas mãos um paradigma de gestão, pois no ambiente computacional todo recurso possui limitações.
A definição de valores fixos para um determinado recurso pode ocasionar comportamentos distintos:
- Os valores serem superiores ao necessário e gerar o consumo desnecessário de recursos no ambiente computacional.
- Os valores serem inferiores ao necessário e gerar lentidão e ou indisponibilidade do recurso. Obrigando a alocação de recursos operacionais extras para gestão da indisponibilidade.
Em ambos os casos o resultado não será satisfatório, pois leva ao uso descomedido de recursos escassos, na busca de um uso racional, o Tuxedo nos oferece uma alternativa muito atraente.
Definição de Demanda x Capacidade de Resposta
Conhecer a demanda de um determinado servidor é um requisito não funcional que deve(ria) ser conhecido no momento da construção dos serviços. Uma vez que se conhece a demanda e é aferida a performance dos serviços no momento dos testes, é possível definir a performance do servidor e o número de instâncias necessárias para atender a demanda linear.
Sendo, R tempo de resposta média do servidor, D demanda diária de requisições e I o número de instâncias, podemos realizar o seguinte cálculo, divide-se as requisições diárias pelo número de segundos de um dia e multiplica-se pelo tempo de resposta do serviço.
Se R = 2s e D = 500.000, precisamos de 11.5 instâncias ativas para podermos atender a carga linear de requisições. A rigor, são muito raros os cenários onde um serviço atende a demanda regular de invocações, é comum haver variações durante o período, podendo gerar um ou mais momentos de pico e consequentemente momentos de vales.
A variação de demanda obriga o administrador do ambiente Tuxedo a pensar nos valores adequados de instâncias que vão atender a demanda de pico, a demanda média, a demanda de vale do serviço e qual tempo de resposta é considerado aceitável para um pequeno nível de retenção das chamadas.
Tendo em conta o seguinte cenário:
O serviço X é uma operação transacional com o SLA é de 5s, o tempo médio de resposta em ambiente operacional é de 1.3s e será invocado 200.000 vezes durante o dia, sendo que, 40% dessas chamadas serão concentradas no período das 12pm-14-pm e 18h-20h.
É necessário se preocupar com a demanda de pico e a demanda regular, não há informação suficiente para avaliar a demanda de vale para o serviço, dessa forma, o volume de pico é:
- 40% das transações: 80.000
- Período do volume: 4 horas
- Transações por segundo: 5.6
- Instâncias necessárias: (5.6 x 1.3) = 8 (como não existe meia instância, arredonda-se para cima)
Demanda regular:
- 60% das transações: 120.000
- Período do volume: 20 horas
- Transações por segundo: 1.7
- Instâncias necessárias (1.7 x 1.3) = 3
Os números acima são valores absolutos, indicam a média absoluta de requisições no momento de baixa demanda e o máximo absoluto no momento de pico, no entanto, existe uma variação entre os dois momentos, o ambiente pode estar operando em um regime abaixo da média no momento A e com o aumento da carga, no momento B alcança o pico após 1 hora de trabalho, isso indica que não é necessário ocupar antecipadamente os recursos necessários para atender uma demanda esperada, sendo que, esse volume poderá levar uma hora para ser alcançado.
A melhor forma de gerir o número de instâncias disponíveis é avaliar a demanda de requisições e a capacidade de resposta de forma dinâmica, elevando o número de instâncias disponíveis de acordo com o aumento de demanda e reduzindo a capacidade disponível sempre que aferida disponibilidade ociosa, liberando recursos para outros componentes do ambiente.
O gráfico acima apresenta o comportamento do Tuxedo quando definida a adequação dinâmica de recursos, no período de 2 minutos, um determinado serviço teve um aumento de invocações, sendo que, o número de instâncias ativas não eram capazes de atender adequadamente, para isso, levando em conta os parâmetros definidos, o Tuxedo ativou instâncias extras do servidor para que fosse possível adequar a capacidade de resposta, em seguida, desabilitou algumas instâncias por não serem mais necessárias.
Definindo o Comportamento do Servidor Tuxedo
Para ativação e desativação dinâmica de servidores no Tuxedo, é necessário definir o número médio requisições retidas por um determinado período de tempo no ambiente, por exemplo:
- Sempre que o servidorX tiver uma média de 4 requisições ou mais retidas por um tempo superior a 3 segundos, deve ser ativada uma nova instância, até que se alcance o valor máximo de instâncias prevista ou que o número de mensagens retidas fique abaixo do valor definido.
- Quando o servidorX tiver 2 requisições ou menos em média retidas por mais de 30 segundos, deve ser desativada uma instância do servidor até que se alcance o número mínimo de instâncias previstas.
Uma vez que se prevê a demanda e faz-se a definição da adequação da capacidade, não é necessário executar nenhum tipo de ação operacional para que seu serviço atenda de forma correta a variações de volume de requisições.
Como dito no inicio do post, para que funcione a capacidade de adequação de carga no Tuxedo, é necessário conhecer uma série de características distintas que unidas permite tirar o melhor da plataforma, nesse momento, iremos abstrair o conhecimento claro dessas outras características e vamos nos focar na configuração do recurso de gestão dinâmica, para isso devem ser definidos os seguintes parâmetros.
Parâmetros do Servidor
- MIN - Número mínimo de servidores, número de instâncias que devem ser carregadas ao ativar o servidor.
- MAX - Número máximo de instâncias do servidor.
- RQADDR - Nome de identificação da fila de requisições do servidor.
- REPLYQ - Indica se o servidor necessita de fila de resposta.
- CLOPT - Parâmetros de ativação do servidor.
CLOPT="-A -p 2,30:4,3"
Detalhe:
-p – Indica a opção de controle do número de instâncias.
<carga regular> , <período> : <carga superior> , <período> – Indica as características da carga regular para desativação de instâncias e da carga superior para ativação de novas instâncias.
Cada servidor deve usar uma fila exclusiva, não pode ser feita a definição de uma mesma fila para serviços distintos.
Uma visão um pouco mais ampla da configuração nos apresenta:
ServidorX
SRVID=100 SRVGRP=APGR101
MIN=3 MAX=10
RQADDR=SERVXRQ REPLYQ=Y
CLOPT="-A -p 2,30:4,3"
Antes de Encerrar…
… algumas considerações finais, não foi discutido aqui detalhes básicos da arquitetura Tuxedo, como por exemplo, ipc, computação distribuída, load-balance e peso de invocação, esses temas ficam para um momento oportuno.
Instâncias do servidor?
Para quem é novo no mundo Tuxedo, entender alguns termos e algumas características é fundamental para conseguir extrair o máximo dessa plataforma transacional.
- Servidor - Aplicação de negócio (binário) que é executado associado ao Tuxedo.
- Serviço- Interface ou interfaces providas por um servidor.
- Máquina - Equipamento físico onde é executado o ambiente transacional.


