Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Relatório de teste de desempenho do ARMS agent para Java V4.x

Última atualização: Jun 27, 2026

O ARMS (Application Real-Time Monitoring Service) agent aprimora bytecodes durante o runtime da aplicação para gerenciar o desempenho. Assim como outras soluções de gerenciamento de desempenho baseadas em aprimoramento de bytecode, o ARMS agent para Java introduz uma certa sobrecarga de desempenho. No entanto, a equipe do ARMS adotou diversas técnicas para reduzir essa sobrecarga sem comprometer a estabilidade da aplicação. Neste relatório de teste, simulamos cenários com diferentes volumes de tráfego para testar o overhead de desempenho do ARMS agent para Java V4.x. Antes de conectar sua aplicação ao Application Monitoring, recomendamos que consulte este relatório para fazer uma avaliação abrangente.

Cenários de teste

Fluxograma

image

Desenvolvida com Spring Web model-view-controller (MVC), a aplicação Java acessa MySQL e Redis por meio dos frameworks Druid e Jedis com base nas solicitações enviadas pelo Alibaba Cloud Performance Testing (PTS).

  • Ao receber as solicitações ${mall-gateway}/case/api/v1/mysql/execute, a aplicação acessa o MySQL. A cada solicitação recebida, a aplicação acessa o MySQL de 1 a 4 vezes.

  • Ao receber as solicitações ${mall-gateway}/case/api/v1/redis/execute, a aplicação acessa o Redis. A cada solicitação recebida, a aplicação acessa o Redis de 1 a 10 vezes.

Ambiente de teste

  • O PTS fornece a fonte para os testes de carga.

  • A aplicação Java, o MySQL e o Redis são implantados no mesmo cluster do Alibaba Cloud Container Service for Kubernetes (ACK). O tipo de instância dos nós é ecs.u1-c1m2.8xlarge, e a versão do sistema operacional dos nós é Alibaba Cloud Linux 2.1903 LTS 64-bit.

  • Cada pod da aplicação tem 2 núcleos, 4 GB de memória e duas réplicas. Os parâmetros da JVM são os seguintes:

    -Xms3500m -Xmx3500m -XX:MetaspaceSize=500m
  • A versão do ARMS agent para Java é 4.2.1.

  • Código de exemplo

Procedimento de teste

  1. Execute três testes de carga a 500, 1.000 e 2.000 QPS. Cada teste de carga dura 1 hora. Antes de cada teste, execute o warm-up da aplicação Java a 100 QPS por 3 minutos. Os resultados serão usados como métricas de desempenho de baseline.

  2. Instale o ARMS agent para Java V4.1.11. Configure uma taxa de amostragem de 10% na política de amostragem e repita os testes de carga da Etapa 1 para comparar as diferenças no overhead de CPU, overhead de memória e tempo de resposta da aplicação Java.

  3. Instale o ARMS agent para Java V4.1.11. Configure uma taxa de amostragem de 100% na política de amostragem e repita os testes de carga da Etapa 1 para comparar as diferenças no overhead de CPU, overhead de memória e tempo de resposta da aplicação Java.

Nota
  • Para mais informações sobre como configurar a política de amostragem, consulte Modos de amostragem de trace (Agent V3.2.8 ou posterior).

  • Os recursos básicos do Application Monitoring estão ativados, incluindo métricas, traces e quantis. Todos os plug-ins também estão ativados. Alguns recursos avançados estão temporariamente desativados, como compressão de trace, convergência de URL, mascaramento de dados e profiling contínuo.

Métricas de desempenho de baseline

Item

CPU

Memória

Tempo de resposta (Unidade: milissegundos)

500 QPS

6,737%

11,51%

57,6

1.000 QPS

13,040%

11,81%

63,9

2.000 QPS

26,796%

12,19%

70,5

Nota
  • A métrica de CPU representa a porcentagem de CPU usada pelos pods em relação ao total de CPU (2 núcleos).

  • A métrica de memória representa a porcentagem de memória usada pelos pods em relação à memória total. Como o uso de memória pelos pods cresce naturalmente até atingir o valor de requests, o relatório usa o consumo real de memória ao final dos testes de carga.

  • A métrica de tempo de resposta representa o tempo médio de resposta das solicitações. Unidade: milissegundos.

Métricas de desempenho do ARMS agent para Java V4.x

Item

Taxa de amostragem de 10%

Taxa de amostragem de 100%

CPU

Memória

Tempo de resposta (Unidade: milissegundos)

CPU

Memória

Tempo de resposta (Unidade: milissegundos)

500 QPS

8,412%

13,72%

58,5

9,316%

13,91%

58,7

1.000 QPS

16,947%

14,14%

64,9

18,114%

14,42%

65,3

2.000 QPS

34,850%

14,64%

74,6

35,945%

14,67%

76,1

Nota

A relação entre a taxa de amostragem e tanto o CPU quanto o QPS é não linear. Por padrão, há um limite superior para a coleta de traces por segundo.

Overhead de desempenho do ARMS agent para Java V4.x

Item

Taxa de amostragem de 10%

Taxa de amostragem de 100%

CPU

Memória

Tempo de resposta (Unidade: milissegundos)

CPU

Memória

Tempo de resposta (Unidade: milissegundos)

500 QPS

+1,68%

+2,21%

+0,9

+2,58%

+2,40%

+1,1

1.000 QPS

+3,907%

+2,33%

+1,0

+5,07%

+2,61%

+1,4

2.000 QPS

+8,05%

+2,45%

+4,1

+9,14%

+2,48%

+5,6

Conclusão

  1. O overhead adicional de CPU e memória causado pelo ARMS agent para Java V4.x está dentro de 10%.

  2. O ARMS agent para Java V4.x tem impacto pequeno no tempo de resposta (10%), que aumenta apenas 1 milissegundo a 1.000 QPS.

  3. O overhead de desempenho com taxa de amostragem fixa de 100% é ligeiramente maior do que com taxa de amostragem fixa de 10%.