Análise de Desempenho
Usando a análise de desempenho, os administradores podem obter recomendações para melhorar o desempenho de aplicativos Java em execução em instâncias gerenciadas na frota. Para o Aplicativo Java selecionado, o JMS iniciará a gravação de JFR na JVM do aplicativo, assim que a gravação for concluída, o plug-in JMS fará upload do arquivo JFR para o OCI.
A etapa final é a análise dos arquivos JFR e a criação de um relatório com recomendações para a configuração da JVM do aplicativo. Antes de fazer as alterações nos ambientes de produção, sempre verifique os valores recomendados para seus aplicativos. Encontrar a melhor configuração da JVM para atingir suas metas de desempenho pode ser complicado. Há coisas a considerar que o JMS não pode implicar apenas na análise dos eventos do JVM Flight Recorder, se estiver em dúvida, não hesite em entrar em contato com nossa equipe de engenharia de valor https://www.oracle.com/java/java-se-subscription/value-engineering/.
Console do OCI Cloud
- Acesse a Console do OCI como administrador.
- Abra o menu de navegação, clique em Observabilidade e Gerenciamento e, em seguida, clique em Frota em Java Management.
- Selecione sua frota.
- Clique em Instâncias gerenciadas e, em seguida, clique na instância gerenciada na qual o aplicativo está em execução.
- Clique em Aplicativos e selecione o aplicativo no qual a análise de desempenho deve ser iniciada.
- Clique em Ações e selecione Iniciar Análise de Desempenho.
- Clique em Iniciar.
- Quando a solicitação de serviço for concluída, clique em Relatórios de análise de desempenho.
CLI do OCI
- Crie o modelo de payload de destinos usando o seguinte comando:
oci jms fleet request-performance-tuning-analyses --generate-param-json-input targets
- Encontre detalhes sobre seu aplicativo, por exemplo, com:
[ { "applicationInstallationKey": "$APP_INSTALL_KEY", "applicationKey": "$APP_KEY", "jreKey": "$APP_JRE_KEY", "managedInstanceId": "$MANAGED_INSTANCE_OCID" } ]
- Execute o seguinte comando:
oci jms fleet request-performance-tuning-analyses --fleet-id $FLEET_OCID --recording-duration-in-minutes $RECORDING_DURATION --targets file://targets.json
Exemplo
No exemplo a seguir, usaremos o mesmo aplicativo que usamos para demonstração do recurso de análise de criptografia:
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
APP_NAME=spring-tls-server
# get application key
APP_KEY=$(oci jms application-installation-usage-summary summarize-application-installation-usage --display-name-contains $APP_NAME --fleet-id $FLEET_OCID | jq -r '.data.items[]."application-key"')
# start performance analysis on specified managed instance
WORK_REQUEST_OCID=$(oci jms fleet request-performance-tuning-analyses \
--fleet-id "$FLEET_OCID" \
--recording-duration-in-minutes 15 \
--targets "[{\"managedInstanceId\":\"$MANAGED_INSTANCE_OCID\",\"applicationKey\":\"$APP_KEY\"}]" | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
Quando a solicitação de serviço de análise de desempenho for concluída, poderemos verificar o resultado com as seguintes chamadas de API ou podemos verificar a console do JMC OCI Cloud:
#!/usr/bin/env bash
# configuration variables
APP_NAME=spring-tls-server-1.1.0.jar
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
WORK_REQUEST_OCID=ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaavcnv2khspnmu7aj7bjlg2c7rytar7an7wbidhmvgm2fnbr6mvx4a
# get jms report location in object storage service related to our work request, the output will print namespace, bucket-name and object-name
oci jms performance-tuning-analysis-result list \
--fleet-id $FLEET_OCID \
--sort-by timeCreated \
--sort-order DESC \
--all \
--application-name=$APP_NAME \
--managed-instance-id "$MANAGED_INSTANCE_OCID" | jq -r ".data.items[]| select(.\"work-request-id\"==\"$WORK_REQUEST_OCID\") | .namespace,.\"bucket-name\",.\"object-name\""
# namespace, bucket-name and name parameters where taken from the report payload above
oci os object get \
--namespace frmss8xk2qta \
--bucket-name jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta \
--name JMS/ANALYSIS/PERFTUNING/RESULTS/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/PerfTuningAnalysisResult-20250714094533-ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaavcnv2khspnmu7aj7bjlg2c7rytar7an7wbidhmvgm2fnbr6mvx4a-9379a93c-1f35-4574-b528-266d6f8f9984.json
{
"applicationName": "spring-tls-server-1.1.0.jar",
"applicationId": "afecbb29e4f96bc9c87c5138a26877bd713305696e4f909af2c8947065e0c7cf",
"applicationInstallationId": "36be37c500e042eeef9e7aa52c294bbafd51556a90fd4eaae0c6ce099939d77c",
"jfrFileName": "JMS/JFR/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/20250714092917_479_0_1840025_0_spring-tls-server-1.1.0.jar.jfr",
"timeAnalyzed": "2025-07-14T09:45:33.022837159Z",
"summary": {
"warnings": [
{
"key": 1,
"code": "G1GCSmallerNewSizeFromMaxGCPauseMillisRule",
"description": "Decrease Young generation size to achieve lower pauses",
"message": "Current MaxGCPauseMillis (-2ms) is far from the actual average Young GC time (13.95ms). Setting smaller young generation may reduce average Young GC time. For example, this can be achieved by reducing -XX:MaxNewSize=40m. ",
"currentVmOptions": "",
"recommendedVmOptions": "-Xmn40894464",
"detailsLink": "https://docs.oracle.com/en/java/javase/guides/vm/gctuning/g1_gc_tuning.html#g1_gc_tuning ",
"comment": ""
},
...
],
"currentVmOptions": "",
"recommendedVmOptions": "-Xmn39m -XX:MetaspaceSize=92m -Xmx238m -Xms238m -XX:MaxHeapSize=238m -XX:MinHeapSize=238m -XX:InitialHeapSize=238m -XX:+AlwaysPreTouch"
},
"version": "1.0"
}