Desempenho do STS RSFN CLUSTER 7.0.3
Escalabilidade denomina a capacidade de realizar mais trabalho proporcionalmente ao aumento na capacidade do sistema que realiza o trabalho.
Quando nós tomamos um determinado sistema que nós sabemos que realiza trabalho em uma máquina com um processador, nós esperamos que este mesmo sistema realize o dobro do trabalho em uma máquina com dois processadores.
Na prática, devido a existência de diversos tipos de gargalo no sistema, desde o hardware, passando pelo sistema operacional, até a aplicação, a escalabilidade real será menor.
O objetivo deste trabalho é avaliar a escalabilidade de um cluster STS na variável concorrência, isto é, na quantidade de trabalho sendo realizada concorrentemente.
Por nível de concorrência queremos dizer a quantidade de trabalho que concorre pelo sistema, ou seja, que roda “ao mesmo tempo”; isto pode significar uma aplicação com N threads rodando operações síncronas ou pode significar uma aplicação rodando operações assíncronas com N operações pendentes no mesmo tempo.
Tomando uma arquitetura fixa, realizamos medições fazendo variar a quantidade de concorrência, com o intuito de verificar o impacto nas métricas latência (tempo de uma operação) e vazão (taxa de operações por unidade de tempo).
Nesta medição, usamos uma arquitetura com dois STS Server executando em máquinas AWS EC2 e um STS Client Java executando em uma terceira máquina AWS EC2 .
Obtivemos cada métrica executando a operação sobre um arquivo de 1 KiB de tamanho configurando a medição para o nível de concorrência na escala 1, 2, 4, 8, 16, 32, 64, 128, 256, 384 e 512.
RESULTADOS:
Observamos que a curva da vazão sobe consistentemente com o aumento da concorrência até o nível de concorrência 256, quando então começa a cair, e as curvas de latência permanecem aproximadamente lineares, abaixo de 50ms, até o nível de concorrência 64, quando então começam a subir, sendo que o percentil 99 acelera rapidamente a partir do nível de concorrência 128.
Medição 1: empacotamento RSFN com protocolo 3
Medição 2: desempacotamento RSFN com protocolo 3
METODOLOGIA:
Arquitetura
Utilizamos AWS EC2 com uma VPC isolada e três máquinas conectadas a esta VPC na seguinte configuração.
Duas máquinas com Windows Server 2019 e STS Server 7.0.3.
Uma máquina com Ubuntu 22.04 e STS Client Java 7.0.3.
Ambos os Servidores STS com um domínio configurado para o protocolo RSFN 3 contendo um ISPB com uma chave versão , e o parâmetro configurado para 1000.
Arquivo de configuração do STS Client Java editado para os dois servidores acima com o mesmo peso de 50%.
Chave privada em arquivo PKCS 12
Medição 1: empacotamento RSFN 3
Nesta medição, avaliamos o desempenho do STS 7.0.3 na operação de empacotamento RSFN 3 utilizando a ferramenta .
Arquivo de configuração de logging da ferramenta ajustado para nível .
Arquivo de dados gerado com 1 KiB de tamanho.
Cada rodada de teste foi realizada com:
- reiniciar ambos os serviços servidor STS;
- executar a ferramenta 1 vez e descartar o resultado;
- executar a ferramenta 5 vezes e coletar o resultado.
Os percentis de latência são obtidos da saída da ferramenta , e o tempo total de execução é obtido da saída da ferramenta time.
Comando da medição:
Medição 2: desempacotamento RSFN 3
Nesta medição, avaliamos o desempenho do STS 7.0.3 na operação de empacotamento RSFN 3 utilizando a ferramenta .
Arquivo de configuração de logging da ferramenta ajustado para nível .
Arquivo de dados gerado com 1 KiB de tamanho.
Cada rodada de teste foi realizada com:
- reiniciar ambos os serviços servidor STS;
- executar a ferramenta 1 vez e descartar o resultado;
- executar a ferramenta 5 vezes e coletar o resultado.
Os percentis de latência são obtidos da saída da ferramenta , e o tempo total de execução é obtido da saída da ferramenta .
Comando da medição: