O Application Real-Time Monitoring Service (ARMS) oferece continuous profiling por meio do agente ARMS. Esse recurso coleta diagnósticos de CPU, memória e nível de código de aplicações Java em tempo de execução. Este relatório quantifica essa sobrecarga em cargas de trabalho de produção realistas.
Principal conclusão: Com todos os recursos de continuous profiling ativados, a sobrecarga de CPU e memória permanece abaixo de 5%, e o tempo de resposta aumenta menos de 0,2 ms.
Configuração do teste
Arquitetura da aplicação
A aplicação de teste foi desenvolvida com Spring Web MVC e processa dois tipos de solicitações:
${mall-gateway}/case/api/v1/mysql/execute-- acessa o MySQL de 1 a 4 vezes por solicitação${mall-gateway}/case/api/v1/redis/execute-- acessa o Redis de 1 a 10 vezes por solicitação
Cada tipo de solicitação corresponde a 50% do total de consultas por segundo (QPS).
Ambiente
|
Componente |
Configuração |
|
Teste de estresse |
Alibaba Cloud Performance Testing (PTS) |
|
Cluster |
Alibaba Cloud Container Service for Kubernetes (ACK), cluster único |
|
Tipo de instância do nó |
ecs.u1-c1m2.8xlarge |
|
Sistema operacional |
Alibaba Cloud Linux 2.1903 LTS 64 bits |
|
Pods da aplicação |
2 núcleos, 4 GB de memória, 2 réplicas |
|
Agente ARMS |
Java v4.2.1 |
A aplicação Java, o MySQL e o Redis estão implantados no mesmo cluster ACK.
Código de demonstração: alibabacloud-microservice-demo/arms-demo
Procedimento
Cada execução de teste segue esta sequência:
Instale o agente ARMS e defina a taxa de amostragem (10% ou 100%).
Aqueça a aplicação a 50 QPS durante 5 minutos.
Execute um teste de estresse no QPS alvo por 30 minutos com o continuous profiling desativado. Registre o uso de CPU, o uso de memória e o tempo de resposta da linha de base.
Ative dinamicamente todos os recursos de continuous profiling: diagnósticos de CPU, memória e código. Continue o teste de estresse por mais 30 minutos e registre as mesmas métricas.
Cada teste de estresse tem duração total de 1 hora. Os testes se repetem a 500, 1.000 e 2.000 QPS para taxas de amostragem de 10% e 100%.
Linha de base: desempenho sem continuous profiling
|
QPS |
Taxa de amostragem |
CPU |
Memória |
Tempo de resposta |
|
500 |
10% |
8.112% |
13,52% |
55,5 ms |
|
500 |
100% |
8.416% |
13,62% |
56,5 ms |
|
1.000 |
10% |
15.247% |
14,14% |
62,9 ms |
|
1.000 |
100% |
15.614% |
14,42% |
65,3 ms |
|
2.000 |
10% |
30.550% |
14,64% |
70,6 ms |
|
2.000 |
100% |
30.945% |
14,67% |
71,1 ms |
Desempenho com continuous profiling ativado
|
QPS |
Taxa de amostragem |
CPU |
Memória |
Tempo de resposta |
|
500 |
10% |
8.912% |
15,52% |
55,6 ms |
|
500 |
100% |
9.316% |
15,71% |
56,6 ms |
|
1.000 |
10% |
17.140% |
16,24% |
63,0 ms |
|
1.000 |
100% |
17.710% |
16,82% |
65,4 ms |
|
2.000 |
10% |
34.650% |
16,84% |
70,7 ms |
|
2.000 |
100% |
35.245% |
16,89% |
71,3 ms |
Sobrecarga do continuous profiling
Esta tabela isola a sobrecarga gerada pelo continuous profiling e compara as métricas antes e depois da ativação do recurso na mesma execução de teste.
|
QPS |
Taxa de amostragem |
CPU |
Memória |
Tempo de resposta |
|
500 |
10% |
+0,80% |
+2,00% |
+0,1 ms |
|
500 |
100% |
+0,90% |
+2,09% |
+0,1 ms |
|
1.000 |
10% |
+1.893% |
+2,10% |
+0,1 ms |
|
1.000 |
100% |
+2.096% |
+2,40% |
+0,1 ms |
|
2.000 |
10% |
+4,10% |
+2,20% |
+0,1 ms |
|
2.000 |
100% |
+4,30% |
+2,22% |
+0,2 ms |
Principais observações:
A sobrecarga de CPU escala com o QPS: de +0,80% a 500 QPS até +4,30% a 2.000 QPS (amostragem de 100%). Em todos os níveis de carga testados, a sobrecarga de CPU permanece abaixo de 5%.
A sobrecarga de memória mantém-se consistente em aproximadamente +2% em todos os níveis de carga e taxas de amostragem.
O tempo de resposta aumenta entre 0,1 e 0,2 ms, impacto insignificante na latência do usuário final.
Conclusão
Com todos os recursos de continuous profiling ativados (diagnósticos de CPU, memória e código), a sobrecarga de CPU e memória permanece dentro de 5%. Ativar apenas um subconjunto de recursos reduz ainda mais a sobrecarga.
O continuous profiling tem impacto insignificante na latência da aplicação. O tempo de resposta aumenta no máximo 0,2 ms nas condições testadas.